2012-07-28 11 views
36

Um virtuelle Python-Umgebungen zu erstellen, verwende ich virtualenv und pip. Der Arbeitsablauf ist sehr einfach:Geteilte Anforderungsdateien in pip

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

Die Anzahl der unterschiedlichen Anforderungsdateien genug wachsen können, handlich zu machen, einen Weg zu haben, sie sofort zu schließen, so würde ich eher sagen lieber:

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

mit req1_req2.txt enthält so etwas wie:

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

oder auf andere Weise:

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

Nichts davon funktioniert und wie einfach es auch sein könnte, ich kann nicht herausfinden, wie ich das machen soll, was ich will.

Irgendwelche Vorschläge?

+0

Was ist mit Skript, die Eingabe wie req1 | req2 akzeptieren ... es aufteilen und dann os.system mit richtigen Pip-Befehl aufrufen? – mrok

Antwort

61

Das Flag -r ist nicht auf die Befehlszeile beschränkt, es kann auch in Anforderungsdateien verwendet werden. So läuft pip install -r req-1-and-2.txt wenn req-1-und-2.txt enthält diese:

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

alles angegeben installieren wird in req-1.txt und req-2.txt.

+0

Kann dies zum Erweitern und Überschreiben verwendet werden? Z.B. req-1.txt spezifiziert 'foo == 1.3' und req-2.txt' foo == 1.4', würde es 1.4 installieren? –

+2

Beantworten Sie meine eigene Frage: Nein, es funktioniert nicht: 'Doppelte Anforderung: foo == 1.4 ...' –

+2

@ Beluga.me es funktioniert, wenn Ihr Pip das Update hat. Wenn Sie pip 1.5.X haben, was standardmäßig für Debian Wheezy oder Jessie ist, dann sollte * pip install -U pip * (oder ähnlich) dieses Problem beheben. – Sergey