如何在virtualenv中使用不同版本的Django

时间:2011-02-18 23:25:20

标签: django virtualenv

我正在尝试在virtualenv中运行Openblock,但问题是Openblock需要Django 1.2.5并且我已经在服务器上安装了Django 1.1.1。

$ python -c "import django;print django.get_version()"返回1.1.1

激活virtualenv后,同一命令返回1.2.5。到目前为止一切都很好。

但是当我在virtualenv中运行yolk -l时,它显示1.1.1为活动,1.2.5为非活动。

2 个答案:

答案 0 :(得分:7)

你需要将yolk安装到virtualenv中,否则它会列出系统包;蛋黄对当前的virtualenv一无所知。因此,在激活virtualenv的情况下运行pip install yolk。 (如果您在没有--no-site-packages的情况下创建了virtualenv,则需要运行pip install --upgrade yolk)。

我刚刚重新创建了这个场景(除了Debian挤压,其中Django的操作系统版本是1.2.3)并且它有效。使用--no-site-packages

% . foo/bin/activate
(foo)% yolk -l Django
Django          - 1.2.5        - active 
(foo)% deactivate

且没有:

% . bar/bin/activate
(bar)% yolk -l Django
Django          - 1.2.3        - non-active development (/usr/lib/pymodules/python2.6)
Django          - 1.2.5        - active 

一般来说,如果你运行在virtualenv之外安装的任何Python程序,你不应该指望他们知道关于virtualenv的任何信息,除非他们已经被编写以了解virtualenv(例如pip的PIP_RESPECT_VIRTUALENV)。

答案 1 :(得分:-1)

Virtualenv更新sys.path

将这个进出virtualenv进行调试。

python -c "import sys; print '\n'.join(sys.path)"
python -c "import os; print os.getenv('PYTHONPATH')

尝试使用--no-site-packages创建virtualenv并查看它是否仍然存在冲突。