2011-02-18 53 views
2

我試圖在virtualenv中運行Openblock,但問題是Openblock需要Django 1.2.5,並且我已經在服務器上安裝了Django 1.1.1。如何在virtualenv中使用不同版本的Django

$ 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

爲什麼蛋黃報告有什麼關係?你的測試導入了正確的版本,所以一切都很好。 – 2011-02-18 23:41:58

+0

這是http://stackoverflow.com/questions/2742980/virtualenv-yolk-problem – 2011-02-19 00:29:27

+0

的副本...雖然夠方便,但每組答案中的解釋都非常相輔相成。希望人們會明白:-) – 2011-02-19 01:34:06

回答

7

您需要將yolk安裝到virtualenv中,否則它會列出系統包;蛋黃不知道有關當前的virtualenv。因此在啓動virtualenv的情況下運行pip install yolk。 (如果您創建了virtualenv而沒有--no-site-packages,則需要運行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

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並查看它是否仍然存在衝突。

相關問題