Requisitos de matplotlib con pip install en virtualenv

Tengo un archivo Requirements.txt como este:

numpy matplotlib 

Cuando bash pip install -r requirements.txt Requirements.txt dentro de un nuevo virtualvenv, obtengo esto:

 REQUIRED DEPENDENCIES numpy: no * You must install numpy 1.1 or later to build * matplotlib. 

Si instalo numpy primero y matplotlib después, funciona. Sin embargo, me gustaría seguir usando pip install -r requirements.txt . ¿Es posible?

Matplotlib y pip no parecen jugar muy bien juntos. Así que no creo que sea posible en este caso.

pip primero descarga un paquete que se encuentra en el archivo de requisitos y luego ejecuta setup.py , pero en realidad no lo instala (no estoy muy seguro de los setup.py internos de pip ). Después de que todos los paquetes se preparan de esta manera, se instalan.

El problema es que matplotlib comprueba si numpy está instalado en su setup.py (la comprobación en sí está definida en setupext.py ). Entonces, en el momento en que se realiza la comprobación, numpy no se instala y matplotlib setup.py sale con el mensaje de error que recibió (Esto puede no ser un error, ya que puede requerir numpy para comstackr).

Esto fue abordado una vez en el problema pip # 24 y número 25 . Los temas están cerrados pero dan más detalles.

Lo que estoy haciendo hasta ahora es instalar primero el número y luego instalar todos los paquetes de mi archivo de requisitos.

Actualización 12/2012

Hay un nuevo problema de pip abierto que trata este problema.

Actualización 04/2013

El problema está cerrado como WONTFIX

Es un problema conocido de la biblioteca y actualmente se está discutiendo como una propuesta de mejora de Matplotlib: https://github.com/matplotlib/matplotlib/wiki/MEP11 . Hasta que se arregle, la única solución que puedo imaginar es volver a empaquetar la biblioteca para eliminar la comprobación numpy.

Sí. “Requirements.txt” es solo un archivo plano desde el que pip puede usar para instalar paquetes. En ese archivo, puede cambiar la versión de las dependencias. Por ejemplo, parece que necesita al menos 1.1, así que intente cambiar la línea con ‘numpy’ para que sea:

numpy == 1.1

O, puedes usar> = así:

numpy> = 1.1

Esto puede ser lo que te detiene. Pero, AFAIK, matplotlib ya debería tener una dependencia en numpy. Parece que eso necesita ser arreglado.

Vea también esto ¿Cómo instalar un paquete con un rango mínimo y máximo de versiones?

y

En el archivo de requisitos setup.py o pip, ¿cómo controlar el orden de instalación de las dependencias del paquete?

Después de jugar con pip últimamente me di cuenta de que el archivo de requisitos se debe reorganizar manualmente, preferiblemente mientras se genera.

En el caso simple (es decir, solo numpy y matplotlib requiere ordenamiento), simplemente puede revertir el archivo de requisitos: pip freeze | sort -r pip freeze | sort -r

Acabo de acostumbrarme a invocar un script para configurar repetidamente mi virtualenv; involucra dos archivos de requisitos: uno con solo numpy y otro con todo lo demás.

No es algo a lo que hay que acostumbrarse, ya que pip intentará hacer ‘todo o nada’ cuando instales a través de un archivo de requisitos. De esta manera, puede realizar la instalación para que las dependencias se instalen primero.

¡Lo hice funcionar en virtualenv dentro de un cuaderno iPython!

yo tengo

 ipython==2.2.0 numpy==1.8.2 matplotlib==1.4.2 

Funciona en una notebook iPython con

 %matplotlib inline from pylab import * plot([1,2,3]) 

Sin embargo, no funciona en una consola iPython, pero estoy perfectamente feliz de hacer mi gráfica en el cuaderno.

En un momento pude engañarlo para que trabajara desde la consola instalando algo en el virtualenv, pero otras cosas solo en el espacio de nombres global, pero olvidé cómo lo hice. Simplemente seguí instalando y desinstalando cosas.