wheel all python pip

wheel - ¿Cómo `pip install` un paquete que tiene dependencias que no son de Python?



pip install upgrade (2)

Muchos paquetes de Python tienen dependencias de compilación en paquetes que no son de Python. Estoy pensando específicamente en lxml y cffi, pero este dilema se aplica a muchos paquetes en PyPI. Ambos paquetes tienen dependencias de compilación no publicitadas en paquetes que no son Python como libxml2-dev, libxslt-dev, zlib1g-dev y libffi-dev. Los sitios web para lxml y cffi declaran algunas de estas dependencias, pero parece que no hay forma de resolver esto desde una línea de comando.

Como resultado, hay cientos de preguntas sobre SO que toman esta forma general:

pip install foo falla con un error: "error fatal: bar.h: no existe tal archivo o directorio". ¿Cómo lo arreglo?

¿Es esto un uso indebido de pip o es así como se pretende? ¿Existe una manera sensata de saber qué dependencias de compilación instalar antes de ejecutar pip ? Mi enfoque actual es:

  1. Quiero instalar un paquete llamado foo .
  2. pip install foo
  3. foo tiene una dependencia en una bar paquetes de Python.
    • Si falla la compilación de bar , mire el mensaje de error y adivine / google qué dependencia de Python necesito instalar.
    • sudo apt-get install libbaz-dev
    • sudo pip install bar
    • Repita hasta que la bar tenga éxito.
  4. sudo pip uninstall foo
  5. Repita todo el proceso hasta que no haya ningún mensaje de error.

El paso # 4 es particularmente molesto. Aparentemente, pip (versión 1.5.4) instala el paquete solicitado primero, antes de cualquier dependencia . Entonces, si alguna dependencia falla, no puede simplemente pedirle a pip que la instale nuevamente, porque cree que ya está instalada. Tampoco hay opción de instalar solo las dependencias, por lo que debe desinstalar el paquete y luego reinstalarlo.

¿Hay algún proceso más inteligente para usar pip ?


Este es en realidad un comentario sobre la respuesta que sugiere usar apt-get pero no tengo suficientes puntos de reputación para dejar uno.

Si usas virtualenv mucho, instalar los paquetes python a través de apt-get puede ser complicado, ya que puedes obtener misteriosos errores cuando los paquetes python instalados en todo el sistema y los paquetes python instalados en tu virtual intentan interactuar entre ellos. . Una cosa que he encontrado que ayuda es utilizar la función build-dep . Para construir las dependencias de matplotlib, por ejemplo:

sudo apt-get build-dep python-matplotlib

Y luego active su entorno virtual y realice la pip install matplotlib . Todavía pasará por el proceso de compilación, pero muchas de las dependencias se ocuparán de usted.

Esto es lo que los repositorios de cran sugieren al instalar paquetes R en ubuntu.


Para los paquetes más populares, existe una solución alternativa para los sistemas ubuntu recientes. Por ejemplo, quiero instalar matplotlib . Cuando pip install matplotlib , generalmente falla debido a una dependencia faltante.

Puede usar apt-get install python-matplotlib en apt-get install python-matplotlib lugar. Para python3, puede usar apt-get install python3-matplotlib