我了解如何创建virtualenv,激活virtualenv,然后在virtualenv激活时安装django。例如:
virtualenv ~/narnia
source ~/narnia/bin/activate
pip install django
根据我的理解,当你“激活”一个虚拟环境时,它只会在你进入shell时更改一些路径变量,仅此而已。所以当激活narnia时,当django安装了pip时,它只是将东西安装到相对于〜/ narnia而不是相对于/ usr的位置(例如〜/ narnia / lib / python2.6 / site-packages而不是/ usr / LIB / python2.6的/站点包)。
现在让我们说我想用virtualenv创建一个django项目。我甚至不需要激活,对吗?我可以这样做:
deactivate
cd ~
narnia/bin/django-admin.py startproject myproject
所以,如果我有一个设置了“myproject”的网络服务器......这个django项目在这一点上如何与narnia virtualenv相关联?系统路径变量不会只是正常的系统范围的python路径吗? “myproject”如何知道使用纳尼亚环境?
我对它的运作方式感到有些困惑。任何帮助表示赞赏。
谢谢!
答案 0 :(得分:3)
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()
答案 1 :(得分:1)
如果您希望在生产甚至登台环境中使用带有Django的virtualenv,我希望您激活环境,具体取决于您是手动操作还是使用例如virtualenvwrapper,设置适当的环境变量。我不确定在虚拟环境中安装Django然后不使用它的目的是什么。
顺便说一句,正如我看到这一点,我看到相关问题Django and VirtualEnv Development/Deployment Best Practices显示在侧边栏中。这似乎与您的设置相关。