modules mac python pip

python - mac - Evite que pip falle en un solo paquete al instalar con requirements.txt



upgrade pip windows (4)

Estoy instalando paquetes desde requirements.txt

instalación de pip -r requirements.txt

El archivo requirements.txt dice:

Pillow lxml cssselect jieba beautifulsoup nltk

lxml es el único paquete que no se puede instalar y esto lleva a que todo falle (los resultados esperados lo señalan los larsks en los comentarios). Sin embargo, después de que lxml falla, pip aún se ejecuta y descarga el resto de los paquetes.

Por lo que entiendo, el comando pip install -r requirements.txt fallará si alguno de los paquetes enumerados en los requirements.txt no se instala.

¿Hay algún argumento que pueda aprobar al ejecutar pip install -r requirements.txt para decirle que instale lo que pueda y omita los paquetes que no puede, o para salir tan pronto como vea que algo falla?


¿Tiene requisitos para usar lxml? Aquí están para la instalación:

sudo apt-get install libxml2-dev libxslt-dev python-dev

Si usa Windows o Mac, puede verificar eso también. Alternativamente, establecer STATIC_DEPS = true descargará y compilará ambas bibliotecas automáticamente. (C)
http://lxml.de/installation.html


Ejecutar cada línea con la pip install puede ser una solución.

cat requirements.txt | xargs -n 1 pip install

Nota: -a parámetro no está disponible en MacOS, por lo que el gato viejo es más portátil.


La solución xargs funciona pero puede tener problemas de portabilidad (BSD / GNU) y / o ser engorrosa si tiene comentarios o líneas en blanco en su archivo de requisitos.

En cuanto al uso en el que se requeriría tal comportamiento, utilizo, por ejemplo, dos archivos de requisitos separados, uno que solo enumera las dependencias centrales que deben instalarse siempre y otro archivo con dependencias no esenciales que están en el 90% de los casos no es necesario para la mayoría de los casos de uso. Eso sería un equivalente de la sección Recommends de un paquete Debian.

Uso el siguiente script de shell (requiere sed ) para instalar dependencias opcionales :

#!/bin/sh while read dependency; do dependency_stripped="$(echo "${dependency}" | sed -e ''s/^[[:space:]]*//'' -e ''s/[[:space:]]*$//'')" # Skip comments if [[ $dependency_stripped == /#* ]]; then continue # Skip blank lines elif [ -z "$dependency_stripped" ]; then continue else if pip install "$dependency_stripped"; then echo "$dependency_stripped is installed" else echo "Could not install $dependency_stripped, skipping" fi fi done < recommends.txt


Para ventanas:

# This code install line by line a list of pip package import sys import pip def install(package): pip.main([''install'', package]) if __name__ == ''__main__'': with open(sys.argv[1]) as f: for line in f: install(line)