django如何使用virtualenv? [英] How does django work with virtualenv?

查看:197
本文介绍了django如何使用virtualenv?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我了解如何创建一个virtualenv,激活该virtualenv,然后在virtualenv激活的时候安装django。例如:

I understand how to create a virtualenv, activate that virtualenv, and then install django while the virtualenv is activated. Ex:

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

根据我的理解,当您激活一个虚拟环境时,只需更改一些路径变量,在一个壳,没有更多。所以当django在narnia被激活的时候安装了pip,它只是将东西安装到相对于/ usr(ex。〜/ narnia / lib / python2.6 / site-packages而不是/ usr / lib / python2.6 / site-packages)。

From what I understand, when you "activate" a virtual environment it just changes some path variables while you're in a shell, nothing more. So when django is installed with pip while narnia is activated, it simply installs things into locations relative to ~/narnia instead of relative to /usr (ex. ~/narnia/lib/python2.6/site-packages instead of /usr/lib/python2.6/site-packages).

现在,我想用virtualenv创建一个django项目。我甚至不必被激活,正确吗?我可以这样做:

And now let's say I want to create a django project with that virtualenv. I don't even have to be activated, correct? I could just do:

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

所以,如果我有一个web服务器设置了myproject...怎么样这个django项目绑在narnia virtualenv上?系统路径变量是否只是普通的系统范围的python路径? myproject如何知道使用纳尼亚环境?

So, if I have a web server set up with "myproject"...how is that django project tied to the narnia virtualenv at this point? Won't the system path variables simply be the normal systemwide python paths? How does "myproject" know to use the narnia environment?

我对这个工作有点困惑。任何帮助都不胜感激。

I am a little confused on how that works. Any help is appreciated.

谢谢!

推荐答案

有一种方法来配置他们的Python使用。您可以设置环境变量,路径等。使用这些工具来指向virtualenv。

Web servers typically have a way to configure their Python use. You can set environment variables, paths, and so on. Use these tools to point to the virtualenv.

例如,在我的Apache httpd.conf中:

For example, in my 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文件:

and I have an myapp.wsgi file:

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

这篇关于django如何使用virtualenv?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆