2010-09-08 15 views
24

¿Cómo puedo especificar dependencias opcionales en un archivo de requisitos de pip? De acuerdo con el pip documentation esto es posible, pero la documentación no explica cómo hacerlo y no puedo encontrar ningún ejemplo en la web.Dependencias opcionales en un archivo de requisitos de pip

+0

Great Q. - a related q. sería cómo definir un conjunto de requisitos que deberían intentarse para su instalación, pero no considerar la instalación una falla si no se pueden instalar. Tengo un paquete que funciona mejor si Numpy está instalado, pero tiene un respaldo si Numpy no puede compilar por alguna razón. Me encantaría que sea un requisito instalado por defecto pero opcional si falla. –

Respuesta

26

En lugar de especificar dependencias opcionales en el mismo archivo que los requisitos estrictos, puede crear un optional-requirements.txt y un requirements.txt.

Para exportar los paquetes de su entorno actual en un archivo de texto, puede hacer esto:

pip freeze > requirements.txt 

Si es necesario, modificar el contenido de la requirements.txt para representar con precisión las dependencias de su proyecto. A continuación, para instalar todos los paquetes en este archivo, ejecute:

pip install -U -r requirements.txt 

-U dice pip para actualizar los paquetes a la última versión, y -r le indica que debe instalar todos los paquetes en requirements.txt.

+1

Creo que ha malentendido la pregunta. 'pip freeze' simplemente imprimirá todas las dependencias. Lo que quiero saber es cómo puedo especificar qué dependencias son necesarias y cuáles son opcionales dentro del archivo de requisitos de pip. – del

+0

Veo la referencia en los documentos a los que creo que se refiere, pero no estoy seguro de que sea posible en un archivo de requisitos ... aunque podría tener dos archivos de dependencia, uno que enumera las dependencias opcionales. Voy a modificar mi respuesta –

+0

Gracias - este es el enfoque que ya estaba tomando, pero leer el bit sobre las dependencias opcionales en el documento me hizo pensar que podría haber una mejor manera de hacerlo. – del

2

Está mal entendiendo los documentos; no son tan claros como podrían ser. El punto en los documentos es que con un archivo de requisitos puede tener la libertad de especificar su conjunto completo de paquetes de trabajo recomendados, incluidas las dependencias necesarias y las opcionales. Puede agregar comentarios (líneas que comienzan con #) para distinguir los dos a los humanos, pero pip no hace distinción. También puede tener dos archivos de requisitos, como sugiere Daniel.

+5

No es realmente libre de incluir tanto las dependencias necesarias como las opcionales en un archivo de requisitos porque 'pip install' se cancelará inmediatamente si alguno de los paquetes en el archivo no se instala. Parece que usar dos archivos de requisitos por separado es la única solución correcta. – del

4

En 2015 PEP-0508 define una forma de especificar dependencias opcionales en requirements.txt:

requests[security] 

Eso significa que yourpackage necesidades requests por su opción de seguridad. Puede instalarlo como:

pip install yourpackage[security] 
+0

Puede configurar uno de estos "extras" usando el argumento ['extras_require'] (http://setuptools.readthedocs.io/en/latest/setuptools.html#declaring-extras-optional-features-with-theirown -dependencias) para la función 'setup' en' setuptools'. Puede ver en [las solicitudes setup.py] (https://github.com/requests/requests/blob/3c1d36b827417fdeaf5a1c106129de30dac371d7/setup.py#L98) cómo se configura el 'security'" extra ". –

Cuestiones relacionadas