2013-06-30 44 views
25

我開始使用Continuum.io的Anaconda軟件包來完成scipy工作。我已經能夠啓動anaconda並運行了,但是我無法分辨anaconda是否爲它創建的每個新環境創建了一個新的PYTHONPATH環境變量,或者它是否依賴於通用系統PYTHONPATH?我在文檔中找不到關於此的任何信息。此外,當我做了一個printenv時,我沒有在新創建的環境中看到一個PYTHONPATH變量 - 儘管我找到了一些新的anaconda創建的環境變量。我能找到的最好的方法是,anaconda將一些anaconda目錄和新的環境目錄添加到PATH變量的頭部 - 但這並不一定會將新包與系統環境隔離開,但它很接近。有沒有人知道這個問題的答案,或者找到了解決這個問題的方法。anaconda是否爲每個新環境創建一個單獨的PYTHONPATH變量?

+0

但是並不是每個Python軟件包都可以在Anaconda中使用,那麼當您也使用pip來安裝軟件包時,怎麼樣?那麼你確實需要一個(Python版本特定的)PYTHONPATH,所以你需要擔心在每個shell中/每次你獲得'activate'腳本來改變Python版本時改變/設置它。對? – smci

回答

23

不,唯一需要爲Anaconda環境修改的是PATH(以便它可以從環境bin/目錄獲得正確的Python,或者在Windows上獲得正確的Python Scripts\)。

Anaconda環境的工作方式是它們硬連接安裝到環境中的所有東西。對於所有意圖和目的,這意味着每個環境都是一個完全獨立的Python和所有包的安裝。通過使用硬鏈接,這是高效完成的。因此,沒有必要混淆PYTHONPATH,因爲環境中的Python二進制文件已經搜索了環境中的站點包以及環境的lib,等等。

+0

啊優秀。太棒了。正是我想知道的。再次感謝。 – krishnab

+0

在Windows機器上使用它,並從兩個安裝PYTHONPATH明顯不同。 anaconda沒有我的模塊目錄。對於參考,我從Windows 7中的高級系統設置中添加了它。從python中看起來很好,它在ipython筆記本中已損壞 – Joop

15

Anaconda不使用PYTHONPATH。但是請注意,如果設置了PYTHONPATH,則可以使用它來加載不在anaconda環境中的庫。這就是爲什麼激活一個環境之前,它可能是好做一個

unset PYTHONPATH 

例如這個PYTHONPATH點不正確的大熊貓lib目錄下:

export PYTHONPATH=/home/john/share/usr/anaconda/lib/python 
source activate anaconda-2.7 
python 
>>>> import pandas as pd 
/home/john/share/usr/lib/python/pandas-0.12.0-py2.7-linux-x86_64.egg/pandas/hashtable.so: undefined symbol: PyUnicodeUCS2_DecodeUTF8 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/home/john/share/usr/lib/python/pandas-0.12.0-py2.7-linux-x86_64.egg/pandas/__init__.py", line 6, in <module> 
    from . import hashtable, tslib, lib 
ImportError: /home/john/share/usr/lib/python/pandas-0.12.0-py2.7-linux-x86_64.egg/pandas/hashtable.so: undefined symbol: PyUnicodeUCS2_DecodeUTF8 

取消設置PYTHONPATH防止錯誤的大熊貓LIB被加載:

unset PYTHONPATH 
source activate anaconda-2.7 
python 
>>>> import pandas as pd 
>>>> 
+2

使用PYTHONPATH指向本地生成的文件和模塊是否安全?有沒有比使用PYTHONPATH更好的方法? – garyp

+0

我想開發工作正常。我傾向於從具有我正在處理的模塊的目錄運行python,這基本上是一樣的。你也可以使用'pip install -e python_module_dir'加載anaconda env,所以你沒有更新'PYTHONPATH'。 – inodb

相關問題