Listen Sie Abhängigkeiten in Python auf

9

Was ist der effizienteste Weg, alle Abhängigkeiten aufzulisten, die für die Bereitstellung eines Arbeitsprojekts an einem anderen Ort (z. B. auf einem anderen Betriebssystem) erforderlich sind?

Python 2.7, Windows-Entwicklungsumgebung, die kein virtualenv pro Projekt verwendet, sondern eine globale Entwicklungsumgebung, Bibliotheken nach Bedarf installieren, fröhlich von einem Projekt zum nächsten hüpfen.

Ich habe die meisten (nicht sicheren alle ) Bibliotheken, die ich für ein bestimmtes Projekt installieren musste, im Auge behalten. Ich habe nicht den Überblick über alle Sub-Abhängigkeiten behalten, die mit ihnen automatisch installiert wurden. Doing pip freeze listet beide auf und alle anderen Bibliotheken, die jemals installiert wurden.

Gibt es eine Möglichkeit, anzugeben, was Sie installieren müssen, nicht mehr und nicht weniger, um das Projekt bereitzustellen?

Hinweis: Ich kann mir nicht vorstellen, dass es noch kein Q + A gibt, aber ich kann es nicht finden.

BEARBEITEN Im Hinblick auf die Antworten unten, einige Erläuterungen. Mein Projekt besteht aus einer Menge von Modulen (die ich geschrieben habe), jede mit einem Haufen import s. Sollte ich einfach alle Importe von allen Modulen in eine einzige Datei kopieren, sortieren, Duplikate eliminieren und alle aus der Standard-Bibliothek entfernen (und woher weiß ich, dass sie das sind)? Oder gibt es einen besseren Weg? Das ist die Frage.

    
RolfBly 14.02.2017, 22:01
quelle

3 Antworten

16

pipreqs löst das Problem. Es generiert projektebene requirement.txt-Datei.

Installieren Sie pipreqs: pip install pipreqs

  1. Generieren Sie die Projektanforderung.txt-Datei: pipreqs / path / to / your / project /
  2. Die
  3. -Anforderungsdatei wird in /path/to/your/project/requirements.txt
  4. gespeichert

Wenn Sie weitere Vorteile von pipreqs über pip freeze lesen möchten, lesen Sie hier

    
haifzhan 14.02.2017 22:13
quelle
6

Scannen Sie Ihre import -Anweisungen. Wahrscheinlich importieren Sie nur Dinge, die Sie explizit importieren wollten, und nicht die Abhängigkeiten.

Mache eine Liste wie die pip freeze und erstelle und aktiviere ein virtualenv.

Do pip install -r your_list , und versuchen Sie, Ihren Code in diesem virtualenv auszuführen. Behalten Sie alle ImportError -Ausnahmen, stimmen Sie sie mit Paketen ab und fügen Sie sie Ihrer Liste hinzu. Wiederholen Sie den Vorgang, bis der Code ohne Probleme ausgeführt wird.

Sie haben jetzt eine Liste, die Sie auf Ihrer Bereitstellungssite an pip install füttern können.

Dies ist extrem manuell, erfordert jedoch keine externen Tools und zwingt Sie, sicherzustellen, dass Ihr Code ausgeführt wird. (Das Ausführen Ihrer Testsuite als Überprüfung ist großartig, aber nicht ausreichend.)

    
9000 14.02.2017 22:10
quelle
1

Der Weg dazu besteht in der Analyse Ihrer Importe. Um das zu automatisieren, schau dir Snakefood an. Dann können Sie eine requirements.txt Datei erstellen und auf Ihrem Weg zur Verwendung von virtualenv .

Im Folgenden werden die Abhängigkeiten aufgeführt, ausgenommen Module aus der Standardbibliothek:

%Vor%

Verwandte Fragen:

Erhalte eine Liste der verwendeten Python-Pakete von einem Django-Projekt

Python-Paketabhängigkeiten auflisten, ohne sie zu laden?

>     
nighthawk454 14.02.2017 22:11
quelle

Tags und Links