2015-09-04 4 views
9

Wenn ich pip freeze > requirements.txt ausführen, scheint es alle installierten Pakete zu enthalten. Dieses erscheint als das dokumentierte Verhalten.Pip Freeze für nur Projektanforderungen

Ich habe jedoch etwas falsch gemacht, da dies jetzt Dinge wie Django in Projekte einschließt, die nichts mit Django zu tun haben.

Wie bekomme ich Anforderungen für nur dieses Projekt? oder in Zukunft wie installiere ich ein Paket mit pip für dieses Projekt verwendet werden. Ich glaube, ich habe etwas über eine virtualenv verpasst.

+3

'pip' hat keine Möglichkeit, zu verstehen, dass Ihr Projekt mit nichts zu suchen haben, sagen wir, Django. Im Allgemeinen möchten Sie eine isolierte virtuelle Umgebung ohne Zugriff auf System-Site-Pakete erstellen und pip mit '--isolated' Flag ausführen, um Dinge in' PYTHONPATH' zu ignorieren. Und natürlich sollten Sie keine Pakete in dieser Umgebung installieren, die nicht von Ihrem Projekt benötigt werden. – Alik

+0

@Alik Okay, genau das hatte ich befürchtet. Ich werde später die virtuellen Umgebungen erstellen. Wenn Sie dies als tatsächliche Antwort einreichen möchten, werde ich es akzeptieren. – ToothlessRebel

Antwort

2

Ich verwende diesen Befehl

pip freeze -r requirements.txt | grep -B100 "pip freeze" | grep -v "pip freeze" 

Wenn ich pip freeze -r requirements.txt lief der Ausgang ist so etwas wie

APScheduler==3.2.0 
Eve==0.6.4 
Eve-Elastic==0.3.8 
## The following requirements were added by pip freeze: 
arrow==0.8.0 
Cerberus==0.9.2 

habe ich eine Anforderung wie diese Datei

APScheduler 
Eve 
Eve-Elastic 

So erhalte ich diese Ausgabe und grep, um die Abhängigkeiten zu entfernen, die ich nicht möchte.

Erste Ausgabe dieses in eine Datei

pip freeze -q -r requirements.txt | grep -B100 "pip freeze" | grep -v "pip freeze" > requirements-froze.txt 

, die ausgegeben wird nur die Libs mit Version

APScheduler==3.2.0 
Eve==0.6.4 
Eve-Elastic==0.3.8 

Dann

mv requirements.txt requirements.txt 
+0

Ich muss das prüfen, aber ich glaube, dass alle Anforderungen von 'pip freeze' hinzugefügt wurden, dies würde bedeuten, dass die gesuchte Zeile die erste wäre. – ToothlessRebel

14

pipreqs den Tag retten kann für eine Datei Anforderungen ersetzen spezifisches Projekt. Gerade

pip(3) install pipreqs 
#then 
pipreqs path/to/project 

See more from here

Verwandte Themen