Estoy instalando paquetes de requirements.txt
pip install -r requirements.txt
El requirements.txtarchivo lee:
Pillow
lxml
cssselect
jieba
beautifulsoup
nltk
lxmles el único paquete que no se instala y esto lleva a que todo falle (resultados esperados como lo señalan los larsks en los comentarios). Sin embargo, después de lxmlfallas pipaún se ejecuta y descarga el resto de los paquetes.
Por lo que entiendo, el pip install -r requirements.txtcomando fallará si alguno de los paquetes enumerados en la requirements.txtfalla no se instala.
¿Hay algún argumento que pueda pasar al ejecutar pip install -r requirements.txtpara decirle que instale lo que pueda y omita los paquetes que no puede, o que salga tan pronto como vea que algo falla?

requirements.txt, presumiblemente es obligatorio , por lo que tiene sentido quepipfalle si el paquete no se puede instalar. Si el código se ejecuta de todos modos sin ese paquete, entonces no era un requisito. La poda aleatoria de paquetes fallidosrequirements.txtparece que solo va a causar problemas con las dependencias faltantes.pip install -r <some file>flujo de trabajo para estandarizar la creación del entorno apropiado.Respuestas:
Ejecutar cada línea con
pip installpuede ser una solución alternativa.Nota: el
-aparámetro no está disponible en MacOS, por lo que el gato viejo es más portátil.fuente
cat requirements.txt | xargs -n 1 pip installcat requirements.txt | cut -f1 -d"#" | sed '/^\s*$/d' | xargs -n 1 pip installeliminar cualquier cosa en los comentarios y deshacerme de las líneas vacías.xargs, hay una-aopción de marca, que permitexargsleer argumentos del archivo, por lo que esto se puede hacer comoxargs -n 1 -a requirements.txt pip install. Previene UUOC y plomería excesivaFOR /F %k in (requirements.txt) DO pip install %k-abandera, considere< requirements.txt xargs -n 1 pip install, o si no le gusta la redirección en el frentexargs -n 1 pip install < requirements.txt,. :-)Esta solución maneja líneas vacías, líneas de espacios en blanco, # líneas de comentarios, espacios en blanco y luego # líneas de comentarios en su require.txt.
Sombrero de punta a esta respuesta para la magia sed.
fuente
pip freezelugar decat requirements.txt.Para ventanas:
versión pip> = 18
versión pip <18
fuente
La
xargssolución 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 caso de uso donde 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 centrales que se encuentran 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
Recommendssección de un paquete debian.Utilizo el siguiente script de shell (requiere
sed) para instalar dependencias opcionales :fuente
Gracias, Etienne Prothon por las vitrinas.
Pero, después de actualizar a pip 18, el paquete pip no expone main al público. Por lo tanto, es posible que deba cambiar un código como este.
fuente
Para ventanas:
requirements.txtarchivo en él..pyextensión, por ejemplo,install_packages.pypython install_packages.pyPuede agregar otros parámetros en la función de instalación. Me gusta:
main(['install'] + [str(package)] + ['--update'])fuente