8

scikit-learn v0.11に付属しているEPD7.3.1(現在はEnthought Canopyと呼ばれています)をインストールしています。Ubuntu12.04を実行しています。scikit-learnのv0.12をインストールする必要があります。

scikit-learnドキュメントには、リポジトリのクローンを作成し、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の指示に従う必要がありますか?

4

1 に答える 1

12

scikit-learn Webサイトに記載されているアクションは、EPDのscikit-learnバージョンに関係なく機能します。PYTHONPATH Pythonは、環境変数に設定されたscikit-learnバージョンを自動的に使用します。これは、scikit-learnのGitバージョンのディレクトリパスに設定する必要があります。

UnixライクなシステムでBashを使用する場合は、次のことを行う必要があります。

  • scikit-learnの最新コードをインストールするためのアクションを実行します(この例では、クローンを作成しました/home/yourname/bin/scikit-learn
  • 次の行を編集.bashrcして追加します。export PYTHONPATH="/home/yourname/bin/scikit-learn";
  • 新しいターミナルを開き、次のように入力してインタラクティブモードでPythonを起動しますpython
    • タイプ:import sklearn
    • タイプ:sklearn.__verion__これは、'0.12-git'の代わりに表示されるはずです0.11

なぜこれが機能するのですか?Pythonは、変数sys.pathlistパスのa)を内部的に使用して、モジュールとパッケージを探す必要があるすべてのディレクトリを追跡します。モジュールまたはパッケージが要求されると、Pythonは一致するものが見つかるまでこのリストを順番に調べます。したがって、たとえば、モジュールはに複数回リストできますがsys.path、リストの最初に表示されたバージョンのみが使用されます。

すべてのPythonインストールには、にリストされている独自のデフォルトのパスセットがありますsys.path。拡張する1つの方法は、にsys.pathパスをリストすることPYTHONPATHです。Pythonが起動すると、この環境変数が読み取られ、sys.pathリストの先頭に追加されます。したがって、別のバージョンのscikit-learnへのパスをPYTHONPATHthen(EPD)に追加すると、Pythonは最初にそのバージョンのscikit-learnを見つけて、でさらにリストされているバージョンの代わりにそれを使用しsys.pathます。

表示するsys.pathには、単純import sysに、次にprint sys.path。また、たとえば、1つのPythonプログラムで0.12バージョンのscikit-learnのみを使用し、他のすべてのPythonプログラムでデフォルトとして0.11バージョンを使用する場合は、PYTHONPATH空のままにして、scikit-learn0.12へのパスのみを手動で挿入できます。コードの上部:

import sys
sys.path.insert(0, '/home/yourname/bin/scikit-learn')
import sklearn
于 2012-08-31T17:28:20.087 に答える