[英]Upgrade version of scikit-learn included in Enthought Canopy distribution
我安裝了EPD 7.3.1(現稱為Enthought Canopy),它帶有scikit-learn v 0.11。 我正在運行Ubuntu 12.04。 我需要安裝v 0.12的scikit-learn。
scikit-learn doc說克隆存儲庫,將scikit-learn目錄添加到PYTHONPATH,然后構建擴展: python setup.py build_ext --inplace
問題是EPD是它自己封閉的世界(有多個scikit dirs):
./lib/python2.7/site-packages/scikits/
./lib/python2.7/site-packages/sklearn
然后是:
./EGG-INFO/scikit_learn/
我真的不想進行實驗,因為花了很長時間才把事情調到這一點。 在這種情況下,我應該遵循scikit-learn的指示嗎?
scikit-learn網站上描述的行動與EPD中的scikit-learn版本無關。 Python將自動使用PYTHONPATH
環境變量中設置的scikit-learn版本,您應將其設置為scit-learn的Git版本的目錄路徑。
如果在類Unix系統上使用Bash,則應執行以下操作:
/home/yourname/bin/scikit-learn
) .bashrc
並添加以下行: export PYTHONPATH="/home/yourname/bin/scikit-learn";
python
以交互模式啟動Python
import sklearn
: import sklearn
sklearn.__verion__
現在應該顯示'0.12-git'
而不是0.11
為什么這樣做? Python在內部使用變量sys.path
(路徑list
)來跟蹤它應該查找模塊和包的所有目錄。 一旦請求模塊或包,Python將按順序瀏覽此列表,直到找到匹配項。 因此,例如,可以在sys.path
多次列出模塊,但只使用列表中首先出現的版本。
每個Python安裝都將在sys.path
列出自己的默認路徑集。 擴展sys.path
一種方法是列出PYTHONPATH
路徑。 一旦Python啟動,它將讀取此環境變量並將其添加到sys.path
列表的開頭。 因此,如果您將路徑添加到另一個版本的scikit-learn到PYTHONPATH
然后(EPD),Python將首先找到該版本的scikit-learn並使用它而不是sys.path
進一步列出的版本。
要查看sys.path
,只需import sys
然后print sys.path
。 另外,例如,如果您只想在一個Python程序中使用0.12版本的scikit-learn並在所有其他Python程序中使用0.11版本作為默認值,那么您可以將PYTHONPATH
保留為空並且僅將路徑插入scikit-learn 0.12手動在代碼頂部:
import sys
sys.path.insert(0, '/home/yourname/bin/scikit-learn')
import sklearn
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.