Python django如何与virtualenv合作?
我了解如何创建virtualenv,激活该virtualenv,然后在激活virtualenv的同时安装django。例:Python django如何与virtualenv合作?,python,django,virtualenv,wsgi,gunicorn,Python,Django,Virtualenv,Wsgi,Gunicorn,我了解如何创建virtualenv,激活该virtualenv,然后在激活virtualenv的同时安装django。例: virtualenv ~/narnia source ~/narnia/bin/activate pip install django 据我所知,当你“激活”一个虚拟环境时,当你在一个shell中时,它只会改变一些路径变量,仅此而已。因此,当django在激活narnia的同时安装pip时,它只需将东西安装到相对于~/narnia而不是相对于/usr的位置(例如~/nar
virtualenv ~/narnia
source ~/narnia/bin/activate
pip install django
据我所知,当你“激活”一个虚拟环境时,当你在一个shell中时,它只会改变一些路径变量,仅此而已。因此,当django在激活narnia的同时安装pip时,它只需将东西安装到相对于~/narnia而不是相对于/usr的位置(例如~/narnia/lib/python2.6/site-packages而不是/usr/lib/python2.6/site-packages)
现在让我们假设我想用这个virtualenv创建一个django项目。我甚至不需要被激活,对吗?我可以这样做:
deactivate
cd ~
narnia/bin/django-admin.py startproject myproject
那么,如果我用“myproject”设置了一个web服务器……那么django项目在这一点上是如何与narnia virtualenv绑定的呢?系统路径变量不是简单的系统范围的python路径吗?“myproject”如何知道使用纳尼亚环境
我对它的工作原理有点困惑。感谢您的帮助
谢谢 Web服务器通常有一种配置Python使用的方法。可以设置环境变量、路径等。使用这些工具指向virtualenv 例如,在我的Apache httpd.conf中:
WSGIDaemonProcess myapp processes=2 threads=12 python-path=/home/nedbat/webapps/myapp/server:/home/nedbat/webapps/myapp/lib/python2.7
WSGIProcessGroup myapp
WSGIRestrictEmbedded On
WSGILazyInitialization On
WSGIScriptAlias / /home/nedbat/webapps/myapp/myapp.wsgi
我有一个myapp.wsgi文件:
import os
import site
import sys
VE = '/home/nedbat/webapps/myapp/ve'
site.addsitedir(VE + '/lib/python2.7/site-packages')
os.environ['DJANGO_SETTINGS_MODULE'] = 'prod_settings'
os.environ['USE_PYPY'] = 'y'
os.environ['TMPDIR'] = '/home/nedbat/webapps/myapp/tmp'
from django.core.handlers.wsgi import WSGIHandler
application = WSGIHandler()
如果您希望在生产环境或登台环境中使用virtualenv with Django,我希望您激活该环境,并根据您是手动还是使用VirtualEnvrapper(例如VirtualEnvrapper)来设置适当的环境变量。我不确定在虚拟环境中安装Django然后不使用它的目的是什么
顺便说一下,当我看这个的时候,我看到相关的问题出现在侧边栏中。这似乎与您的设置非常相关。或者django项目本身并不与任何特定环境相关联,但WSGI很酷,谢谢。我将不得不研究如何配置我的wsgi服务器以使用virtualenv