2014-06-20 8 views
5

Ich versuche, eine requirements.txt-Datei programmatisch zu generieren. Auf diese Weise kann ich es gegen eine zweite .txt-Datei unterscheiden. Bis jetzt habe ich folgendes versucht, aber sie geben nur die Anforderungen zur Konsole aus (keine .txt Datei wird erzeugt).Programmgesteuert erzeugen Anforderungen.txt Datei

Bisher habe ich versucht,

import pip 

    pip.main(["freeze",">","requirements.txt"]) 

und

from subprocess import call 

    call(["pip","freeze", ">","requirements.txt"]) 

Wenn ich versuche, obwohl Sie den gleichen Befehl manuell im Terminal auszuführen, wird die Datei ohne Probleme erzeugt. Irgendwelche Vorschläge?

Antwort

6

pip Stellen Sie direkt die Liste von Distributionen

Script

bieten myfreeze.py
import pip 
with open("requirements.txt", "w") as f: 
    for dist in pip.get_installed_distributions(): 
     req = dist.as_requirement() 
     f.write(str(req) + "\n") 

Dann erhalten Sie erwarteten Inhalte in Ihrem requirements.txt Datei.

3
subprocess.Popen(['pip', 'freeze'], stdout=open('/tmp/pip.log', 'w'))