Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django如何与virtualenv合作?_Python_Django_Virtualenv_Wsgi_Gunicorn - Fatal编程技术网

Python django如何与virtualenv合作?

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,激活该virtualenv,然后在激活virtualenv的同时安装django。例:

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