Upgrade-Version von scikit-learn in der Enthought Canopy-Distribution enthalten

8

Ich habe EPD 7.3.1 installiert (heutzutage Enthought Canopy genannt), welches mit scikit-learn v 0.11 geliefert wird. Ich benutze Ubuntu 12.04. Ich muss v 0.12 von scikit-learn installieren.

Der scikit-learn Dokument sagt klicke das Repository, füge das scikit-learn hinzu Verzeichnis zu Ihrem PYTHONPATH, und erstellen Sie die Erweiterung an Ort und Stelle: python setup.py build_ext --inplace

Das Problem ist, dass EPD eine eigene geschlossene Welt ist (mit mehreren Scikit-Verzeichnissen):
./lib/python2.7/site-packages/scikits/
./lib/python2.7/site-packages/sklearn

Und dann gibt es:
./EGG-INFO/scikit_learn/

Ich möchte wirklich nicht experimentieren, da es sehr lange gedauert hat, um die Dinge auf diesen Punkt abzustimmen. Soll ich in diesem Fall den Anweisungen von scikit-learn folgen?

    
bahmait 31.08.2012, 17:01
quelle

1 Antwort

12

Die auf der scikit-learn-Website beschriebenen Aktionen funktionieren unabhängig von der scikit-learn-Version in EPD. Python verwendet automatisch die in der Umgebungsvariable PYTHONPATH festgelegte scikit-learn-Version, die Sie auf den Verzeichnispfad setzen sollten der Git-Version von Scikit-lernen.

Wenn Sie Bash auf einem Unix-ähnlichen System verwenden, sollten Sie Folgendes tun:

  • Führen Sie die Aktionen aus, um den neuesten scikit-learn-Code zu installieren ( In diesem Beispiel habe ich es in /home/yourname/bin/scikit-learn )
  • geklont
  • Bearbeite .bashrc und füge die Zeile hinzu: export PYTHONPATH="/home/yourname/bin/scikit-learn";
  • Öffnen Sie ein neues Terminal und starten Sie Python im interaktiven Modus, indem Sie python eingeben.
    • Geben Sie ein: import sklearn
    • Typ: sklearn.__verion__ Dies sollte jetzt '0.12-git' anstelle von 0.11 anzeigen

Warum funktioniert das? Python verwendet intern die Variable sys.path (a list of paths), um alle Verzeichnisse zu verfolgen, in denen nach Modulen und Paketen gesucht werden soll. Sobald ein Modul oder ein Paket angefordert wird, durchsucht Python diese Liste der Reihe nach, bis es eine Übereinstimmung gefunden hat. So kann z. B. ein Modul in sys.path mehrfach aufgeführt werden, aber nur die Version, die zuerst in der Liste angezeigt wurde, wird verwendet.

Für jede Python-Installation wird ein eigener Standardsatz von Pfaden in sys.path aufgeführt. Eine Möglichkeit, sys.path zu erweitern, besteht darin, Pfade in PYTHONPATH aufzulisten. Sobald Python startet, liest es diese Umgebungsvariable und fügt sie zum Anfang der sys.path -Liste hinzu. Wenn Sie also den Pfad zu einer anderen Version von scikit-learn zu Ihrem PYTHONPATH hinzufügen, dann wird (EPDs) Python diese Version von scikit-learn zuerst finden und sie anstelle der weiter unten in sys.path aufgeführten Version verwenden.

Um sys.path anzuzeigen, einfach import sys und dann print sys.path . Wenn Sie beispielsweise nur die 0.12-Version von scikit-learn in einem Python-Programm verwenden und die 0.11-Version als Standard in allen anderen Python-Programmen verwenden möchten, können Sie PYTHONPATH leer lassen und nur den Pfad zu scikit-learn einfügen. Lerne 0.12 manuell oben in deinem Code:

%Vor%     
Sicco 31.08.2012, 17:28
quelle