2012-08-31 22 views
8

Mam zainstalowany EPD 7.3.1 (obecnie nazywany Enthought Canopy), który jest dostarczany z scikit-learn v 0.11. Używam Ubuntu 12.04. Muszę zainstalować wersję 0.12 scikit-learn.Zaktualizowana wersja scikit-learn zawarta w dystrybucji Entought of Canopy

scikit-learn doc says klon repozytorium, należy dodać katalog scikit-learn do PYTHONPATH i budować przedłużenie w lokalu: python setup.py build_ext --inplace

Problem polega na tym, że EPD jest jego własny zamknięty świat (z mulitple scikit katalogów):
./lib/python2.7/site-packages/scikits/
./lib/python2.7/site-packages/sklearn

A jeszcze:
./EGG-INFO/scikit_learn/

Naprawdę nie chcę eksperymentować, ponieważ bardzo dużo czasu zajęło dostrojenie rzeczy do tego punktu. Czy w tym przypadku powinienem przestrzegać instrukcji scikit-learn?

Odpowiedz

12

Działania opisane na stronie internetowej poświęconej nauce scikit działają niezależnie od wersji naukowo-naukowej w EPD. Python automatycznie użyje zestawu scikit-learn w wersji PYTHONPATHenvironment variable, który powinieneś ustawić na ścieżce do katalogu Git w wersji scikit-learn.

Jeśli używasz bash na systemie Unix-like, należy wykonać następujące czynności:

  • Wykonaj czynności do install scikit-learn's latest code (w tym przykładzie sklonowany go /home/yourname/bin/scikit-learn)
  • Edycja .bashrc i dodaj linia: export PYTHONPATH="/home/yourname/bin/scikit-learn";
  • Otwórz nowy terminal i uruchomić Pythona w trybie interaktywnym, wpisując python
    • Typ: import sklearn
    • Typ: sklearn.__verion__ ten powinien teraz pokazać '0.12-git' zamiast 0.11

Dlaczego to działa? Python używa wewnętrznie zmiennej sys.path (a list) do śledzenia wszystkich katalogów, w których powinien szukać modułów i pakietów. Po zażądaniu modułu lub pakietu, Python będzie kolejno przeglądał tę listę, dopóki nie znajdzie dopasowania. Tak więc, np. Moduł może być wymieniony wiele razy w sys.path, ale zostanie użyta tylko wersja, która pojawiła się jako pierwsza na liście.

Każda instalacja w języku Python będzie miała własny domyślny zestaw ścieżek wymienionych w sys.path. Jednym ze sposobów rozszerzenia sys.path jest lista ścieżek w PYTHONPATH. Po uruchomieniu Pythona odczyta tę zmienną środowiskową i doda ją na początek listy sys.path. Jeśli więc dodasz ścieżkę do innej wersji scikit-learn do swojego PYTHONPATH, wówczas (EPD) Python znajdzie tę wersję scikit-learn najpierw i użyje jej zamiast wersji podanej dalej w sys.path.

Aby wyświetlić sys.path, po prostu import sys, a następnie print sys.path. Na przykład, jeśli chcesz używać tylko wersji 0.12 scikit-learn w jednym programie Python i użyj wartości 0.11 wersja domyślnie we wszystkich innych programów Pythona, a następnie można pozostawić PYTHONPATH pusty i tylko wstawić ścieżkę do scikit-learn 0,12 ręcznie w górnej części kodu:

import sys 
sys.path.insert(0, '/home/yourname/bin/scikit-learn') 
import sklearn 
+1

na przepełnienie stosu społeczność daje downvotes złych pytań i przebija do dobrych pytań. Pozostawiłbym pytanie na razie, ale jeśli ludzie zaczną go ignorować, to masz dobrą wskazówkę, że możesz chcieć go usunąć. – Sicco

+0

Wpadłem na ten sam problem, ale mam komputer Mac. Udało mi się zainstalować scikit tylko przez macports (nie używając scikits setup.py, zawsze kończy się błędem w połowie). Jednak nie mogę znaleźć bashrc. Wszystko, co chcę zrobić, to zaktualizować Scikit w EPD (akademickim) do .13, a to okazuje się bardzo trudne, każda pomoc będzie bardzo ceniona! – Shinjitsu

+0

@Shinjitsu Spróbuj użyć .profile zamiast .bashrc. Daj znać czy działa. – Sicco