我正在尝试在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为非活动。
答案 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并查看它是否仍然存在冲突。