Estoy instalando paquetes de requirements.txt
pip install -r requirements.txt
El requirements.txt
archivo lee:
Pillow
lxml
cssselect
jieba
beautifulsoup
nltk
lxml
es 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 lxml
fallas pip
aún se ejecuta y descarga el resto de los paquetes.
Por lo que entiendo, el pip install -r requirements.txt
comando fallará si alguno de los paquetes enumerados en la requirements.txt
falla no se instala.
¿Hay algún argumento que pueda pasar al ejecutar pip install -r requirements.txt
para 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 quepip
falle 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.txt
parece 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 install
puede ser una solución alternativa.Nota: el
-a
pará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 install
cat requirements.txt | cut -f1 -d"#" | sed '/^\s*$/d' | xargs -n 1 pip install
eliminar cualquier cosa en los comentarios y deshacerme de las líneas vacías.xargs
, hay una-a
opción de marca, que permitexargs
leer 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
-a
bandera, 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 freeze
lugar decat requirements.txt
.Para ventanas:
versión pip> = 18
versión pip <18
fuente
La
xargs
solució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
Recommends
secció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.txt
archivo en él..py
extensión, por ejemplo,install_packages.py
python install_packages.py
Puede agregar otros parámetros en la función de instalación. Me gusta:
main(['install'] + [str(package)] + ['--update'])
fuente