2012-08-31 9 views
8

Tengo instalado EPD 7.3.1 (hoy llamado Enthought Canopy), que viene con scikit-learn v 0.11. Estoy ejecutando Ubuntu 12.04. Necesito instalar v 0.12 de scikit-learn.Versión mejorada de scikit-learn incluida en la distribución Enthought Canopy

El scikit-learn doc says clon del repositorio, agregue el directorio scikit-learn a PYTHONPATH, y construir la extensión en su lugar: python setup.py build_ext --inplace

El problema es que EPD es un mundo cerrado (con Mulitple scikit directorios):
./lib/python2.7/site-packages/scikits/
./lib/python2.7/site-packages/sklearn

Y luego está:
./EGG-INFO/scikit_learn/

Realmente no quiero experimentar, ya que me ha llevado mucho tiempo sintonizar las cosas hasta este punto. ¿Debo seguir las instrucciones de scikit-learn en este caso?

Respuesta

12

Las acciones descritas en el sitio web scikit-learn funcionan independientemente de la versión de scikit-learn en EPD. Python utilizará automáticamente la versión de scikit-learn establecida en el PYTHONPATHenvironment variable, que debe establecer en la ruta del directorio de la versión de Git de scikit-learn.

Si utiliza Bash en un sistema Unix, usted debe hacer lo siguiente:

  • realizar las acciones a install scikit-learn's latest code (en este ejemplo cloné a /home/yourname/bin/scikit-learn)
  • Editar .bashrc y añadir la línea: export PYTHONPATH="/home/yourname/bin/scikit-learn";
  • abierto una nueva terminal y empezar a Python en modo interactivo escribiendo python
    • Tipo: import sklearn
    • Tipo: sklearn.__verion__ esto ahora debe mostrar '0.12-git' en lugar de 0.11

Por qué funciona esto? Python usa la variable sys.path (a list de rutas) internamente para hacer un seguimiento de todos los directorios donde debería buscar módulos y paquetes. Una vez que se solicita un módulo o paquete, Python revisará secuencialmente esta lista hasta que encuentre una coincidencia. Por lo tanto, por ejemplo, un módulo se puede enumerar varias veces en sys.path, pero solo se utilizará la versión que apareció primero en la lista.

Cada instalación de Python tendrá su propio conjunto predeterminado de rutas enumeradas en sys.path. Una forma de extender sys.path es enumerando rutas en PYTHONPATH. Una vez que Python se inicia, leerá esta variable de entorno y la agregará al comienzo de la lista sys.path. Entonces, si agrega la ruta a otra versión de scikit-learn a su PYTHONPATH, entonces (EPD's) Python encontrará esa versión de scikit-learn primero y la usará en lugar de la versión que se detalla más adelante en sys.path.

Para ver sys.path, simplemente import sys y luego print sys.path. Además, por ejemplo, si solo desea utilizar la versión 0.12 de scikit-learn en un programa de Python y usar el 0.versión de 11 como por defecto en todos los demás programas de Python entonces usted podría dejar el PYTHONPATH vacío y sólo insertar la ruta a scikit-learn 0,12 manualmente en la parte superior de su código:

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

El desbordamiento de la pila de la comunidad da downvotes a malas preguntas y upvotes a buenas preguntas. Dejaría la pregunta por ahora, pero si la gente comienza a rechazarla, entonces tiene una buena indicación de que es posible que desee eliminarla. – Sicco

+0

Me he encontrado con el mismo problema, pero tengo una Mac. Logré instalar scikit solo a través de macports (sin usar scikits setup.py, siempre termina en error a mitad de camino). Sin embargo, no puedo encontrar el bashrc. Todo lo que quiero hacer es actualizar Scikit en EPD (académico) a .13, y está resultando muy difícil, ¡cualquier ayuda sería muy apreciada! – Shinjitsu

+0

@Shinjitsu Pruebe usar .profile en lugar de .bashrc. Déjame saber si funciona. – Sicco

Cuestiones relacionadas