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

wmf*_*ox3 2 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.到现在为止还挺好.

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

Nic*_*ley 7

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

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

% . foo/bin/activate
(foo)% yolk -l Django
Django          - 1.2.5        - active 
(foo)% deactivate
Run Code Online (Sandbox Code Playgroud)

没有:

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

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