2012-07-28 15 views
36

Para crear entornos virtuales de Python utilizo virtualenv y pip. El flujo de trabajo es muy simple:Archivos de requisitos divididos en pip

$ virtualenv project 
$ cd project 
$ . bin/activate 
$ pip install -r /path/to/requirements/req1.txt 
$ pip install -r /path/to/requirements/req2.txt 

El número de diferentes archivos requisito puede crecer lo suficiente como para hacer práctico tener una manera de incluir a la vez, así que en vez preferiría decir:

$ pip install -r /path/to/requirements/req1_req2.txt 

con req1_req2.txt que contiene algo como:

include /path/to/requirements/req1.txt 
include /path/to/requirements/req2.txt 

o de otra manera:

$ pip install -r /path/to/requirements/*.txt 

Nada de eso funciona y por muy simple que sea, no sé cómo hacer lo que quiero.

¿Alguna sugerencia?

+0

¿Qué pasa con el script que acepta entradas como req1 | req2 ... divídelo y luego llama a os.system con el comando pip adecuado? – mrok

Respuesta

61

El indicador -r no está restringido solo al uso de la línea de comandos, sino que también se puede usar dentro de los archivos de requisitos. Entonces, ejecutar pip install -r req-1-and-2.txt cuando REQ-1-y-2.txt contiene esto:

-r req-1.txt 
-r req-2.txt 

instalará todo lo especificado en req-req-1.txt y 2.txt.

+0

¿Se puede usar esto para extender y sobrescribir? P.ej. req-1.txt especifica 'foo == 1.3' y req-2.txt' foo == 1.4', ¿instalaría 1.4? –

+2

Respondiendo a mi propia pregunta: No, no funciona: 'Requisito doble dado: foo == 1.4 ...' –

+2

@ beluga.me funciona SI su pip tiene la solución. Si tienes pip 1.5.X que es el predeterminado para decir Debian wheezy o jessie, entonces hacer * pip install -U pip * (o similar) debería solucionar este problema. – Sergey

Cuestiones relacionadas