Verwalten von erforderlichen Python-Paketen mit „requirements.txt“
Wenn Sie Ihr Python-Projekt für andere freigeben oder ein Buildsystem verwenden, um Ihre Python-Anwendung zu erstellen, müssen Sie alle erforderlichen externen Pakete angeben. Wenn Sie planen, Ihr Projekt an andere Speicherorte zu kopieren, an denen Sie eine Umgebung wiederherstellen müssen, müssen Sie auch die erforderlichen abhängigen Pakete definieren.
Der empfohlene Ansatz zum Angeben externer abhängiger Python-Pakete ist die Verwendung einer Anforderungsdatei (readthedocs.org). Diese Datei enthält eine Liste der pip-Befehle, die alle erforderlichen Versionen abhängiger Pakete für Ihr Projekt installieren. Der gängigste Befehl ist pip freeze > requirements.txt
. Dieser Befehl speichert die aktuelle Paketliste Ihrer Umgebung in der requirements.txt
-Datei.
Eine Anforderungsdatei enthält genaue Versionen aller installierten Pakete. Mithilfe von Anforderungsdateien können Sie die Anforderungen einer Umgebung fixieren. Durch die Verwendung präziser Paketversionen können Sie Ihre Umgebung problemlos auf einem anderen Computer reproduzieren. Die Anforderungsdateien enthalten Pakete, auch wenn sie mit einem Versionsbereich, als Abhängigkeit eines anderen Pakets oder mit einem anderen Installationsprogramm als pip installiert werden.
Voraussetzungen
Visual Studio wurde mit Unterstützung für Python-Workloads installiert. Weitere Informationen finden Sie unter Installieren von Python-Unterstützung in Visual Studio.
Eine Anforderungsdatei Sie können eine vorhandene Anforderungsdatei verwenden oder eine Datei generieren, wie in diesem Artikel beschrieben.
Technisch gesehen kann jeder Dateiname zum Nachverfolgen von Anforderungen verwendet werden. Visual Studio bietet jedoch spezifische Unterstützung für die Anforderungsdatei mit dem Namen „requirements.txt“. Sie können das -r <full path to file>
-Argument verwenden, wenn Sie ein Paket installieren, um Ihren bevorzugten Namen für die Datei anzugeben.
Installieren von Abhängigkeiten, die in requirements.txt aufgelistet sind
Wenn Sie ein Projekt laden, das über eine requirements.txt
-Datei verfügt, können Sie alle Paketabhängigkeiten installieren, die in der Datei aufgeführt sind.
Erweitern Sie im Projektmappen-Explorer das Projekt, und erweitern Sie dann den Knoten Python-Umgebungen.
Suchen Sie den Umgebungsknoten, für den Sie die Pakete installieren möchten. Klicken Sie mit der rechten Maustaste auf den Knoten, und wählen Sie Installieren aus „requirements.txt“ aus.
Sie können den Paketinstallationsprozess im Fenster Ausgabe überwachen:
Die Ausgabe listet alle erforderlichen Pakete auf, die installiert sind, zusammen mit allen erforderlichen Updates für betroffene pip-Befehle und der Verfügbarkeit neuerer pip-Versionen.
Installieren von Abhängigkeiten in einer virtuellen Umgebung
Sie können die Python-Paketabhängigkeiten auch in einer vorhandenen virtuellen Umgebung installieren.
Erweitern Sie im Projektmappen-Explorer Ihr Projekt, und erweitern Sie dann den Knoten Python-Umgebungen .
Suchen Sie den virtuellen Umgebungsknoten, für den Sie die Pakete installieren möchten. Klicken Sie mit der rechten Maustaste auf den Knoten, und wählen Sie Installieren aus „requirements.txt“ aus.
Wenn Sie eine virtuelle Umgebung erstellen müssen, lesen Sie Verwenden virtueller Umgebungen.
Generieren der Datei „requirements.txt“
Wenn alle erforderlichen Python-Pakete für Ihr Projekt bereits in einer Umgebung installiert sind, können Sie die requirements.txt
-Datei in Visual Studio generieren.
Erweitern Sie im Projektmappen-Explorer Ihr Projekt, und erweitern Sie dann den Knoten Python-Umgebungen .
Suchen Sie den Umgebungsknoten, für den Sie die Anforderungsdatei generieren möchten. Klicken Sie mit der rechten Maustaste auf den Knoten, und wählen Sie requirements.txt generieren aus.
Aktualisieren oder Hinzufügen von Einträgen zu einer vorhandenen requirements.txt-Datei
Wenn die requirements.txt
-Datei bereits vorhanden ist, zeigt Visual Studio eine Eingabeaufforderung mit mehreren Optionen an:
- Ersetzen der gesamten Datei: Überschreiben Sie alle Elemente, Kommentare und Optionen, die in der
requirements.text
-Datei definiert sind. - Aktualisieren vorhandener Einträge: Aktualisieren Sie die Versionsbezeichner in der
requirements.text
-Datei, damit sie der derzeit installierten Version entsprechen. - Aktualisieren und Hinzufügen von Einträgen: Aktualisieren Sie vorhandene Anforderungen in der
requirements.text
-Datei, und fügen Sie alle neuen Paketanforderungen am Ende der Datei an.
Visual Studio führt pip
aus, um die aktuellen Paketanforderungen für die Umgebung zu erkennen, und aktualisiert dann ihre requirements.txt
-Datei basierend auf Ihrer Auswahl.
Manuelles Installieren der Paketabhängigkeiten
Wenn pip eine Paketabhängigkeit nicht installiert, die in Ihrer requirements.txt
-Datei enthalten ist, schlägt die gesamte Installation fehl.
Sie haben zwei Möglichkeiten, um dieses Problem zu lösen:
Bearbeiten Sie die
requirements.txt
-Datei manuell, um das fehlgeschlagene Paket auszuschließen, und führen Sie dann den Installationsprozess erneut aus.Verwenden Sie pip-Befehlsoptionen, um auf eine installierbare Version des Pakets zu verweisen.
Aktualisieren der Anforderungsdatei mit pip wheel
Wenn Sie den pip wheel
-Befehl zum Kompilieren einer Abhängigkeit verwenden, können Sie die --find-links <path>
-Option Ihrer requirements.txt
-Datei hinzufügen.
Rufen Sie den
pip wheel
-Befehl auf, um die Liste der erforderlichen Abhängigkeiten zu kompilieren:pip wheel azure
Die Ausgabe zeigt die für die gesammelten Pakete gebauten wheels:
Downloading/unpacking azure Running setup.py (path:C:\Project\env\build\azure\setup.py) egg_info for package azure Building wheels for collected packages: azure Running setup.py bdist_wheel for azure Destination directory: c:\project\wheelhouse Successfully built azure Cleaning up...
Fügen Sie die
find-links
-Optionenno-index
zusammen mit der Paketversionsanforderung an Ihrerequirements.txt
-Datei an:type requirements.txt --find-links wheelhouse --no-index azure==0.8.0
Führen Sie den pip-Installationsprozess mit der aktualisierten Anforderungsdatei aus:
pip install -r requirements.txt -v
Die Ausgabe verfolgt den Fortschritt des Installationsvorgangs:
Downloading/unpacking azure==0.8.0 (from -r requirements.txt (line 3)) Local files found: C:/Project/wheelhouse/azure-0.8.0-py3-none-any.whl Installing collected packages: azure Successfully installed azure Cleaning up... Removing temporary dir C:\Project\env\build...