¿Por qué pip no está actualizando mi número y scipy?

Mi problema es que pip no actualizará mis paquetes de Python, aunque no haya errores.

Es similar a este , pero todavía estoy seguro de qué hacer. Básicamente, TODOS mis paquetes para python parecen ser ridículamente obsoletos, incluso después de actualizar todo a través de pip. Aquí están los detalles:

  • Estoy usando pip, versión 1.5.6.
  • Estoy usando Python, versión 2.7.5
  • Estoy en un Mac OSX, versión 10.9.5.

Usando eso, tengo:

  • Mi versión numpy es 1.6.2.
  • Mi versión de scipy es 0.11.0.
  • Mi versión matplotlib es 1.1.1.

Incluso después de intentarlo:

sudo pip uninstall numpy 

Seguido por:

 sudo pip install numpy 

Ambos se completan con éxito, pero cuando entro en python y compruebo la versión de numpy, sigue siendo la antigua. (Como son todos los otros paquetes).

¿No está seguro de lo que está pasando aquí? … ¿Cómo se puede arreglar esto? PS Soy nuevo en esto, así que podría necesitar instrucciones explícitas. Gracias. Además, si alguien quiere, puedo proporcionar una captura de pantalla de pip ya que está instalando numpy.

EDITAR:

Comandos que corrí según los comentarios:

 $which -a pip /usr/local/bin/pip $ head -1 $(which pip) #!/usr/bin/python $ which -a python /usr/bin/python 

En OS X 10.9, Python de Apple viene con un montón de paquetes adicionales preinstalados, en un directorio llamado /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python . Incluyendo numpy .

Y la forma en que están instalados (como si usara easy_install con una antigua versión pre-0.7 de setuptools , pero no en ninguno de los destinos normales de easy_install ), pip no sabe nada sobre ellos.

Entonces, lo que sucede es que sudo pip install numpy instala una copia separada de numpy en '/Library/Python/2.7/site-packages' —pero en su sys.path , el directorio Extras aparece antes que el directorio site-packages , por lo tanto, import numpy todavía encuentra la copia de Apple. No estoy seguro de por qué es eso, pero probablemente no sea algo con lo que quieras simular.


¿Entonces, cómo se puede arreglar esto?

Las dos mejores soluciones son:

  • Use virtualenv e instale su numpy y sus amigos en un entorno virtual, en lugar de en todo el sistema. Esto tiene la desventaja de que tienes que aprender a usar virtualenv pero definitivamente vale la pena hacerlo en algún momento, y si tienes tiempo para aprenderlo ahora, hazlo.

  • Actualice a Python 3.x, ya sea desde un instalador de python.org o desde Homebrew. Python 3.4 o posterior viene con pip , y no viene con ningún paquete preinstalado que no sea pip . Y, a diferencia de instalar un 2.7 separado, no interfiere con el Python de Apple; python3 y python , pip3 y pip , etc., serán todos progtwigs separados, y no tienes que aprender nada sobre cómo funciona PATH o nada de eso. Esto tiene la desventaja de que tienes que aprender Python 3.x, que tiene algunos cambios importantes , por lo que, de nuevo, un poco de una curva de aprendizaje, pero nuevamente, definitivamente vale la pena hacerlo en algún momento.


Suponiendo que ninguno de estos es posible, creo que la opción más sencilla es usar easy_install lugar de pip , para los paquetes que desea instalar versiones más recientes de cualquiera de los “extras” de Apple. Puede obtener una lista completa de ellos mirando lo que hay en /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python . Cuando actualice numpy , probablemente también desee actualizar scipy y matplotlib ; Creo que todo lo demás no está relacionado. (Por supuesto, puede actualizar PyObjC o dateutil o cualquier otra cosa que le interese, pero no tiene que hacerlo).

Esta no es una solución ideal; hay muchas razones por las que easy_install es inferior a pip (por ejemplo, no tener un desinstalador, por lo que tendrá que recordar dónde está la ruta /Library/blah/blah (o sys.path de nuevo en sys.path desde dentro de Python). Normalmente, no sugeriría easy_install para nada, excepto readline y pip sí (y luego solo con Apple Python). Pero en este caso, creo que es más simple que las otras alternativas.

Antigua pregunta, pero la encontré al intentar resolver este problema, publicaremos mi solución.

Me pareció que el diagnóstico de @abarnert era correcto y útil, pero no me gusta ninguna de las soluciones: realmente quiero actualizar la versión predeterminada de numpy. El desafío es que el directorio en el que están estos tipos (que mencionó @abarnert) no puede ser tocado ni por sudo , ya que están en este grupo de “rueda”. De hecho, si va allí y hace sudo rm -rf blah , le dará un error de permiso denegado.

Para solucionar esto, tenemos que tomar medidas drásticas:

  1. Reinicie la computadora en modo de recuperación
  2. Encuentra el terminal y escribe csrutil disable
  3. Reinicie normalmente, luego actualice numpy con pip2 install --user --upgrade numpy (y lo mismo para cualquier otro paquete que tenga este problema)
  4. Repita los pasos ayb, esta vez cambiando “deshabilitar” por “habilitar”

Nota: “csrutil disable” es un negocio serio que puede desestabilizar su máquina, lo usaría solo cuando fuera absolutamente necesario y lo reactivaría lo antes posible. Pero AFAIK es la única forma de actualizar paquetes de Python en un directorio de ruedas.

Cambie el nombre de las versiones numpy y scipy instaladas por Apple en /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/ para que comience a usar las versiones más nuevas instaladas por Pip.