2010-04-30 26 views
11

yolk -l給我的信息,我已經有114個軟件包安裝在我的Ubuntu 10.04。使用virtualenv蛋黃問題

virtualenv virt_env/virt1 --no-site-packages --clear

我切換到創造新的virtualenv目錄後,我迅速改變,然後再yolk -l給了我同樣的114包。

這是怎麼回事?

+0

在虛擬環境中安裝蛋黃幫助...很奇怪。 – 2010-04-30 07:41:20

回答

18

激活一個virtualenv通過改變你的shell PATH來工作,所以virtualenv的bin /目錄是第一個。這是所有它。這意味着當你運行「python」時,它會運行Python二進制文件的virtualenv副本,而不是你的全局系統python。

但是,如果您在全局安裝了蛋黃,那麼您的PATH中唯一的「蛋黃」二進制文件是/ usr/local/bin/yolk或其他;激活virtualenv不會改變這個(因爲你的virtualenv bin/dir中沒有「蛋黃」腳本)。而且/ usr/local/bin/yolk腳本自然會在你的系統中使用Python解釋器。

這就是爲什麼在virtualenv中安裝蛋黃來解決問題;因爲它在virtualenv bin/dir中添加了一個在其shebang行中具有virtualenv python的蛋黃腳本。

如果您不想在每個virtualenv中安裝蛋黃,您也可以將蛋黃腳本包裝從/ usr/local/bin或任何地方複製到virtualenv的bin目錄中,然後手動更改shebang行指向你的virtualenv的python。然而,這不適用於--no-site-packages virtualenv,因爲腳本包裝器將無法找到它需要導入的實際蛋黃包!如果你想在--no-site-packages virtualenv中使用蛋黃,真的你唯一的選擇就是在那裏安裝它。

+1

這可以在每次使用引導腳本創建venv時自動完成:http://www.virtualenv.org/en/latest/#creating-your-own-bootstrap-scripts – Hollister 2011-07-26 21:51:16

+0

如果您使用的是virtualenvwrapper(它我強烈推薦),在你的postmkvirtualenv文件中添加'pip install yolk'。 http://www.doughellmann.com/docs/virtualenvwrapper/scripts.html#scripts-postmkvirtualenv – Hollister 2011-07-26 22:05:39

0

如果問題與您的路徑不相關(我想是這樣),請刪除項目目錄中的lib和scripts文件夾以清除virtualenv設置。使用您發佈的命令行重新創建虛擬環境。激活virtualenv然後安裝蛋黃。

+1

作爲替代方法,嘗試'哪個蛋黃' - 如果它在(yourvirtualenv)/ bin中,然後嘗試關閉您的終端並重新打開它,激活你的virtualenv並再次嘗試'yolk -l'。爲我修好了 – maxm 2012-06-29 09:50:37