如何与Django的virtualenv中工作?(How does django work with

2019-07-30 01:32发布

我知道如何当的virtualenv激活创建的virtualenv,激活的virtualenv,然后安装Django。 例如:

virtualenv ~/narnia
source ~/narnia/bin/activate
pip install django

从我的理解,当你“激活”的虚拟环境,它只是当你在一个外壳,仅此而已改变一些路径变量。 所以,当Django的安装与PIP而纳尼亚被激活,它安装简单的东西到相对于〜/纳尼亚位置,而不是相对于在/ usr(例如:〜/纳尼亚/ lib中/ python2.6的/站点包,而不是在/ usr / LIB / python2.6的/站点包)。

现在,让我们说,我想创建与一个virtualenv中Django项目。 我甚至没有被激活,是否正确? 我可能只是这样做:

deactivate
cd ~
narnia/bin/django-admin.py startproject myproject

所以,如果我有一个Web服务器上设置了“MyProject的” ......怎么是,Django项目在这一点上绑在纳尼亚的virtualenv? 不会在系统路径变量仅仅是正常的系统级蟒蛇的路径? 如何“MyProject的”知道使用纳尼亚环境?

我是如何工作的有点糊涂了。 任何帮助表示赞赏。

谢谢!

Answer 1:

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()


Answer 2:

如果你想使用Django的一个virtualenv中在生产,甚至临时环境,我希望你能激活环境,这取决于你是否做手工,或使用如virtualenvwrapper,设置适当的环境变量。 我不知道它会有什么目的,在虚拟环境中安装Django,然后不使用它。

顺便说一句,就像我看这个我看到了相关的问题Django和VIRTUALENV开发/部署最佳实践在侧边栏显示出来。 这似乎是对您的设置,而相关的。



文章来源: How does django work with virtualenv?