2012-08-31 9 views
8

Ho installato EPD 7.3.1 (oggi chiamato Enthought Canopy), che viene fornito con scikit-learn v 0.11. Sto usando Ubuntu 12.04. Devo installare v 0.12 di scikit-learn.Versione di aggiornamento di scikit-learn inclusa nella distribuzione di Enthought Canopy

Lo scikit-learn doc says clone del repository, aggiungere la directory scikit-learn al vostro PYTHONPATH, e costruire l'estensione sul posto: python setup.py build_ext --inplace

Il problema è che EPD è il suo mondo chiuso (con mulitple scikit dirs):
./lib/python2.7/site-packages/scikits/
./lib/python2.7/site-packages/sklearn

E poi c'è:
./EGG-INFO/scikit_learn/

Non voglio davvero sperimentare perché ci è voluto molto tempo per sintonizzarsi su questo punto. Devo seguire le indicazioni di scikit-learn in questo caso?

risposta

12

Le azioni descritte nel sito Web di scikit-learn funzionano indipendentemente dalla versione di apprendimento di scikit in EPD. Python utilizzerà automaticamente la serie di versioni scikit-learn nello PYTHONPATHenvironment variable, che dovresti impostare sul percorso della directory della versione Git di scikit-learn.

Se si utilizza Bash su un sistema Unix-like, è necessario effettuare le seguenti operazioni:

  • Eseguire le azioni da install scikit-learn's latest code (in questo esempio ho clonato a /home/yourname/bin/scikit-learn)
  • Modifica .bashrc e aggiungere il linea: export PYTHONPATH="/home/yourname/bin/scikit-learn";
  • Aprire un nuovo terminale e avviare Python in modalità interattiva digitando python
    • Tipo: 012.
    • Tipo: sklearn.__verion__ questo dovrebbe ora mostrare '0.12-git' invece di 0.11

Perché fa questo lavoro? Python utilizza la variabile sys.path (uno list di percorsi) internamente per tenere traccia di tutte le directory in cui dovrebbe cercare moduli e pacchetti. Una volta richiesto un modulo o un pacchetto, Python passerà in sequenza l'elenco finché non avrà trovato una corrispondenza. Pertanto, ad esempio, un modulo può essere elencato più volte in sys.path, ma verrà utilizzata solo la versione visualizzata per prima nell'elenco.

Ogni installazione Python avrà il proprio insieme predefinito di percorsi elencati in sys.path. Un modo per estendere sys.path è elencando i percorsi in PYTHONPATH. Una volta avviato, Python leggerà questa variabile di ambiente e la aggiungerà all'inizio dell'elenco sys.path. Quindi, se si aggiunge il percorso a un'altra versione di scikit, si impara a PYTHONPATH quindi (EPD) Python troverà prima quella versione di scikit-learn e la utilizzerà invece della versione elencata più avanti in sys.path.

Per visualizzare sys.path, semplicemente import sys e quindi print sys.path. Inoltre, ad esempio, se si desidera utilizzare la versione 0.12 di scikit-learn in un programma Python e utilizzare lo 0.11 versione di default in tutti gli altri programmi Python allora si poteva lasciare la PYTHONPATH vuota e inserire solo il percorso scikit-learn 0,12 manualmente nella parte superiore del vostro codice:

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

su Stack Overflow la comunità dà downvotes alle domande cattive e upvotes a buone domande. Vorrei lasciare la domanda per ora, ma se la gente inizia a svenderla, allora hai una buona indicazione che potresti volerlo cancellare. – Sicco

+0

Ho incontrato lo stesso problema, ma ho un Mac. Sono riuscito a installare scikit solo tramite macport (non usando scikits setup.py, termina sempre con errori a metà strada). Tuttavia, non riesco a trovare il bashrc. Tutto quello che voglio fare è aggiornare Scikit in EPD (accademico) a .13, e si sta dimostrando molto difficile, ogni aiuto sarebbe molto apprezzato! – Shinjitsu

+0

@Shinjitsu Prova a utilizzare .profile anziché .bashrc. Fammi sapere se funziona. – Sicco