我了解如何创建virtualenv,激活该virtualenv,然后在激活virtualenv的同时安装django.例如:
virtualenv ~/narnia
source ~/narnia/bin/activate
pip install django
据我了解,当您“激活”虚拟环境时,它只是在您处于外壳中时更改了一些路径变量,仅此而已.因此,当在激活narnia的情况下将django与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
因此,如果我在Web服务器上设置了“ myproject” …在这一点上,如何将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()