簡體   English   中英

升級版的scikit-learn包含在Enthought Canopy發行版中

[英]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,則應執行以下操作:

  • 執行操作以安裝scikit-learn的最新代碼 (在此示例中,我將其克隆到/home/yourname/bin/scikit-learn
  • 編輯.bashrc並添加以下行: export PYTHONPATH="/home/yourname/bin/scikit-learn";
  • 打開一個新終端,輸入python以交互模式啟動Python
    • import sklearnimport 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM