2012-12-21 53 views
23

所以我有一個名爲venv的virtualenv文件夾用於我的python項目。如何導入一個全球安裝的軟件包到virtualenv文件夾

我可以運行:

venv/bin/pip install -r requirements.txt 

它安裝我需要的除了一個,M2Crypto項目中的所有需求。安裝它的唯一方法是通過apt-get的:

apt-get install python-m2crypto 

我怎樣才能再加入這個包通過易於安裝到VENV文件夾?

回答

16

我所做的畢竟:

cp -R /usr/lib/python2.7/dist-packages/M2Crypto /home/richard/hello-project/venv/lib/python2.7/site-packages/ 
cp -R /usr/lib/python2.7/dist-packages/OpenSSL /home/richard/hello-project/venv/lib/python2.7/site-packages/ 
2
venv/bin/pip install -I M2Crypto 

-I迫使它也可以安裝到virtualenv中,即使它已經在全球安裝。

+0

我會試試看。爲什麼沒有記錄在pip --help的輸出中。 –

+0

它在'pip help install'中有記錄。 '-I'標誌特定於'install'命令,因此不在全局標誌列表中顯示(還有許多其他特定於命令的標誌)。 – Amber

+1

謝謝。這不是很好。你會發現,M2Crypto實際上可以通過pip來安裝,但是庫中存在一個bug,使得Ubuntu 12.04 LTS的安裝失敗。他們發佈了一個補丁,但它不適合我...所以當我嘗試你的命令時,它會嘗試從pip存儲庫下載庫並安裝它,而不是僅僅複製apt包。 –

34
--system-site-packages 

允許訪問虛擬環境的全局站點包模塊。

你可以這樣做:

$ sudo apt-get install python-m2crypto 
$ virtualenv env --system-site-packages 

...然後你就會有你的virtualenv中獲取m2crypto(與所有其他系統範圍內安裝軟件包)。

+0

只要你小心只安裝你想要全局共享的包到基本的python安裝中,這就是要走的路。 –

+0

但是,如果可以訪問全球站點包,那麼使用虛擬環境有什麼意義? –

+0

Richard Knop,這樣你就可以在你自己的virtualenv中沒有root的情況下安裝額外的軟件包,而不會弄亂系統python。 –

11

toggleglobalsitepackages將切換接入系統範圍site-packages

注意:你需要pip install virtualenvwrapper才能得到這個命令;香草virtualenv不包括它。通過virtualenvwrapper,您還可以獲得非常有用的mkvirtualenvrmvirtualenv命令等等。

+0

。否則你會得到'toggleglobalsitepackages:command not found' – szeitlin

+0

好點補充說。謝謝! – Will

+3

截至今天,它現在是'toggleglobalsitepackages' – eduncan911

相關問題