2017-05-24 71 views
0

我安裝了Canopy和Anaconda。我的默認是Canopy,但是當我啓動screen時,我得到了Anaconda。這在大部分時間對我很有用,但是這次我需要在screen中使用Canopy。Python虛擬環境找不到python模塊

我認爲解決方案是創建一個虛擬的環境,我這樣做是這樣的:

cd /path/to/project 
virtualenv my_project 

問題:virtualenv中不能看到我安裝的Python模塊,如numpy的。

這裏是我的過程的其餘部分:

[email protected]:~/path/to/my_project$ screen 
[email protected]:~/path/to/my_project$ source activate lstm_project 
(lstm_project) [email protected]:~/path/to/my_project$ python 

Enthought Canopy Python 2.7.6 | 64-bit | (default, Sep 15 2014, 17:36:10) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 

>>> import numpy 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named numpy 

下面是sys.path中的輸出:

>>> print sys.path 

['', '/user/path/to/my_project', 
'/opt/enthought/canopy-1.5.1/appdata/canopy-1.5.1.2730.rh5-x86_64/lib/python27.zip', 
'/opt/enthought/canopy-1.5.1/appdata/canopy-1.5.1.2730.rh5-x86_64/lib/python2.7', 
'/opt/enthought/canopy-1.5.1/appdata/canopy-1.5.1.2730.rh5-x86_64/lib/python2.7/plat-linux2', 
'/opt/enthought/canopy-1.5.1/appdata/canopy-1.5.1.2730.rh5-x86_64/lib/python2.7/lib-tk', 
'/opt/enthought/canopy-1.5.1/appdata/canopy-1.5.1.2730.rh5-x86_64/lib/python2.7/lib-old', 
'/opt/enthought/canopy-1.5.1/appdata/canopy-1.5.1.2730.rh5-x86_64/lib/python2.7/lib-dynload', 
'/user/path/to/my_project/lib/python2.7/site-packages'] 

我怎樣才能讓我的virtualenv承認我已經在全球安裝的軟件包?

+0

可能是一個愚蠢的問題,但你確實在*激活virutalenv後安裝模塊* – errata

回答

1

virtualenv默認情況下會忽略系統包。當你創建環境,做

$ virtualenv my_project --system-site-packages 
1

在同一臺機器上的幾個項目的工作可能導致了在一個項目中使用,但不能在其他的一些Python包之間的衝突。

這是人們使用virtualenvs的主要原因。

會發生什麼情況是,您爲每個項目創建一個環境,並僅在該環境內安裝依賴項,這樣做將避免包衝突,這也是跟蹤每個包的哪個包的一個非常好的方法你的項目需要運行,所以如果別人(甚至你)想在另一臺計算機上運行一個項目,那麼它很容易安裝所有需要的軟件包(並且沒有其他)來運行它。

要回答你的問題,如果你想安裝的所有全局包的虛擬環境中執行以下操作:

  1. 打開一個終端(禁用的virtualenv如果你在裏面一個);
  2. 執行:pip freeze > requirements.txt(這將創建一個包含所有全局Python包的.txt文件);
  3. 激活您想要安裝軟件包的環境;
  4. 執行pip install -r requirements.txt(請務必在同一個文件夾requirements.txt是。

我希望我沒有混淆你太多,如果您有任何問題隨時問。