Das Ökosystem von Python hat traditionell auf Tools wie pip
und virtualenv
zur Verwaltung von Abhängigkeiten und Projektumgebungen vertraut. Obwohl uns diese Tools gut gedient haben, führen sie oft zu Abhängigkeitskonflikten, manueller Umgebungsverwaltung und inkonsistenten Projektaufstellungen in Teams.
Python Poetry löst diese Herausforderungen, indem es ein modernes, vereinheitlichtes Abhängigkeits- und Umgebungsverwaltungstool bereitstellt. Es kümmert sich um alles von virtuellen Umgebungen bis hin zur Paketveröffentlichung, und gewährleistet dabei reproduzierbare Builds durch intelligente Abhängigkeitsauflösung.
Dieser Leitfaden zeigt Ihnen, wie Sie Poetry verwenden können, um Ihren Python-Entwicklungsworkflow zu optimieren und übliche Abhängigkeitsprobleme zu vermeiden.
Python Poetry vs. PIP
Poetry und pip haben unterschiedliche Zwecke im Python-Ökosystem. Während pip
hauptsächlich ein Paketinstallationsprogramm ist, ist Poetry ein vollständiges Abhängigkeits- und Projektverwaltungstool. Hier sind die Hauptunterschiede:
1. Abhängigkeitsauflösung
- Pip: Einfache, lineare Abhängigkeitsauflösung, die zu Konflikten führen kann
- Gedichte: Fortgeschrittener Abhängigkeitslöser, der Konflikte vor der Installation verhindert
2. Verwaltung der virtuellen Umgebung
- Pip: Erfordert separate Tools (virtualenv, venv) und manuelle Aktivierung
- Gedichte: Erstellt und verwaltet automatisch virtuelle Umgebungen pro Projekt
3. Projektkonfiguration
- Pip: Verwendet requirements.txt für Abhängigkeiten, setup.py für Projektdaten
- Gedicht: Einzelne pyproject.toml-Datei für alle Konfigurationsbedürfnisse
4. Sperrdateien
- Pip: Keine integrierte Unterstützung für Sperrdateien
- Poetry: Generiert poetry.lock für reproduzierbare Builds in verschiedenen Umgebungen
5. Paketveröffentlichung
- Pip: Erfordert zusätzliche Tools (twine, setuptools) für die Veröffentlichung
- Poetry: Eingebaute Befehle zum Erstellen und Veröffentlichen von Paketen
Wann man Poetry gegenüber pip verwenden sollte
Wählen Sie Poetry, wenn:
- Sie an Teamprojekten arbeiten, die reproduzierbare Umgebungen benötigen
- Pakete erstellen, die auf PyPI veröffentlicht werden sollen
- Komplexe Abhängigkeitsbäume mit potenziellen Konflikten verwalten
- Automatisiertes Management von virtuellen Umgebungen benötigen
- Ein einziges Werkzeug für den gesamten Entwicklungsworkflow möchten
Bleiben Sie bei pip, wenn:
- Arbeiten an einfachen Skripten mit minimalen Abhängigkeiten
- Python zum ersten Mal lernen
- Müssen schnell ein einzelnes Paket installieren
- Arbeiten in Umgebungen, in denen die Installation von Poetry nicht möglich ist
- Warten von Legacy-Projekten, die bereits mit pip eingerichtet sind
Die Faustregel lautet: Verwenden Sie Poetry für jedes Projekt, das geteilt, bereitgestellt oder langfristig gewartet wird. Verwenden Sie pip für schnelle Experimente oder Lernübungen.
Das gesagt, lassen Sie uns direkt in die Verwendung von Poetry einsteigen.
Einrichten von Python Poetry
Sie werden hauptsächlich mit Poetry als Befehlszeilenwerkzeug (CLI) interagieren, daher macht es Sinn, es systemweit auf Ihrem Computer zu installieren. Dieser Abschnitt behandelt diesen wichtigen ersten Schritt und wie Sie einige Standardkonfigurationen für Poetry basierend auf Ihren Bedürfnissen festlegen können.
Installation von Poetry
Sie können Poetry mithilfe eines offiziellen Installationsskripts installieren, das heruntergeladen und mit einem einzigen Befehl ausgeführt werden kann.
Für macOS, Linux und WSL2:
$ curl -sSL https://install.python-poetry.org | sudo python3 -
Für Windows Powershell (ausgeführt mit Administratorrechten):
$ (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -
Wenn Sie Windows verwenden und Python aus dem Microsoft Store installiert haben (aus irgendeinem seltsamen Grund), ersetzen Sie py
durch python
im obigen Befehl.
Nach Abschluss des Installationscripts wird eine Nachricht ausgegeben, die Sie auffordert, Poetry zu Ihrem PATH hinzuzufügen, damit der poetry
-Befehl überall verfügbar ist.
Fügen Sie für macOS, Linux und WSL2 die folgende Zeile zu Ihrem Shell-Skript wie .bashrc
oder .zshrc
hinzu:
$ export PATH="/Users/bexgboost/.local/bin:$PATH"
Für Windows können Sie den Ausgabeanweisungen folgen.
Überprüfen Sie anschließend Ihre Installation, indem Sie poetry --version
ausführen.
Configurieren von Poetry
Der Großteil der Konfiguration von Poetry bezieht sich darauf, wie virtuelle Umgebungen erstellt und wie Pakete installiert werden. Sie können eine (fast) vollständige Liste der Poetry-Konfigurationen mit dem folgenden Befehl ausgeben:
$ poetry config --list
Die Ausgabe wird ungefähr wie folgt aussehen:
cache-dir = "/Users/bexgboost/Library/Caches/pypoetry" experimental.system-git-client = false installer.max-workers = null installer.modern-installation = true installer.no-binary = null installer.parallel = true keyring.enabled = true solver.lazy-wheel = true virtualenvs.create = true virtualenvs.in-project = null virtualenvs.options.always-copy = false virtualenvs.options.no-pip = false virtualenvs.options.no-setuptools = false virtualenvs.options.system-site-packages = false virtualenvs.path = "{cache-dir}/virtualenvs" # /Users/bexgboost/Library/Caches/pypoetry/virtualenvs virtualenvs.prefer-active-python = false virtualenvs.prompt = "{project_name}-py{python_version}" warnings.export = true
In der ersten Zeile sehen wir einen Pfad zum Poetry-Cache. Er wird hauptsächlich verwendet, um heruntergeladene Paketverteilungen und virtuelle Umgebungen zu speichern. Alle von Ihnen erstellten virtuellen Umgebungen werden standardmäßig hier gespeichert. Wenn Sie das ändern möchten, können Sie den folgenden Befehl ausführen:
$ poetry config virtualenvs.path path/to/new/virtualenv/dir
Eine weitere wichtige Konfiguration ist die Anzahl der Kerne, die während der Installation verwendet werden. Standardmäßig ist sie auf vier festgelegt, aber wir können sie schneller machen, indem wir alle CPU-Kerne nutzen. Finden Sie zuerst die Anzahl der Kerne Ihres Computers heraus, indem Sie os.cpu_count()
im Python-Interpreter ausführen. Setzen Sie dann das Ergebnis:
$ poetry config installer.max-workers = 10
Eine optionale Konfiguration besteht darin, ob virtuelle Umgebungen im Arbeitsverzeichnis oder im Cache erstellt werden sollen. Dies wird über die virtualenvs.in-project
-Option
gesteuert. Wenn Sie es auf True setzen, wird das .venv
-Verzeichnis immer in Ihrem Arbeitsverzeichnis erstellt:
$ poetry config virtualenvs.in-project true
Erstellen eines neuen Projekts mit Poetry
Lassen Sie uns in die wichtigsten Schritte zum Erstellen eines neuen Poetry-Projekts eintauchen und die Kernkonfigurationsdatei verstehen.
Initialisieren eines neuen Poetry-Projekts
Die Verwendung von Poetry beginnt normalerweise mit der Erstellung eines neuen Projekts mit dem poetry new
Befehl:
$ poetry new explore-poetry $ cd explore-poetry
Der Befehl erstellt ein explore-poetry
Verzeichnis, das bereits mit den folgenden Dateien und Verzeichnissen gefüllt ist:
explore-poetry ├── pyproject.toml ├── README.md ├── explore-poetry │ └── __init__.py └── tests └── __init__.py
Diese Verzeichnisstruktur folgt den Python-Best Practices:
pyproject.toml
: Die Hauptkonfigurationsdatei, die Metadaten und Abhängigkeiten des Projekts definiertREADME.md
: Dokumentationsdatei, die das Projekt erklärtexplore-poetry/
: Quellcodeverzeichnis, das den Hauptpaketcode enthält, mit__init__.py
um es zu einem Paket zu machentests/
: Verzeichnis für Testdateien, mit__init__.py
um es zu einem Paket zu machen (importierbar)
Verständnis von pyproject.toml
Hier erfordert die pyproject.toml
Datei besondere Aufmerksamkeit, da sie die einzige nicht leere Datei ist, die von Poetry generiert wird:
[tool.poetry] name = "explore-poetry" version = "0.1.0" description = "" authors = ["BexTuychiev <[email protected]>"] readme = "README.md" [tool.poetry.dependencies] python = "^3.8" [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api"
Diese Datei orchestriert Ihr Projekt und dessen Abhängigkeiten. Sie verwendet Tom’s Obvious, Minimal Language, das als die Standardkonfigurationssprache für Python-Pakete in PEP 518 festgelegt wurde.
Alle pyproject.toml
-Dateien sind in Abschnitte unterteilt, die Tabellen genannt werden und Klammern wie tool.poetry
oder build-system
verwenden. Poetry verwendet diese Tabellen, um Abhängigkeiten zu verwalten, Projektbauanforderungen zu erfüllen oder andere Aufgaben auszuführen.
Wenn Sie die in den kommenden Abschnitten beschriebenen Poetry-Befehle ausführen, wird die pyproject.toml
-Datei automatisch aktualisiert.
Arbeiten mit virtuellen Umgebungen in Poetry
In diesem Abschnitt erfahren Sie alles über das Verwalten virtueller Umgebungen in Poetry, sobald Sie es eingerichtet haben. Sie lernen, warum virtuelle Umgebungen wichtig sind, wie Poetry sie automatisch handhabt, und grundlegende Befehle zu ihrer Manipulation, wie Erstellung, Aktivierung und Wechsel. Sie lernen auch, wie Sie Python-Versionen mit Poetry verwalten.
Erstellen und Aktivieren einer virtuellen Umgebung
Wenn Sie Poetry zum ersten Mal installieren, enthält es keine integrierten Umgebungen, wie durch eine leere Ausgabe bestätigt wird, wenn Sie poetry env list
ausführen:
$ poetry env list # keine Ausgabe
Aber sobald Sie Abhängigkeiten hinzufügen (mehr dazu später) mit Poesie hinzufügen Paketname
, erstellt es automatisch eine Umgebung im Cache-Verzeichnis für das Projekt. Zum Beispiel, versuchen wir Anfragen
als Abhängigkeit hinzuzufügen:
$ poetry add requests
Sie sollten eine Ausgabe erhalten, die ähnlich wie folgt aussieht:
Creating virtualenv explore-poetry--I9GJYUn-py3.8 in /Users/bexgboost/Library/Caches/pypoetry/virtualenvs Using version ^2.32.3 for requests Updating dependencies Resolving dependencies... (2.5s) Package operations: 5 installs, 0 updates, 0 removals - Installing certifi (2024.8.30) - Installing charset-normalizer (3.4.0) - Installing idna (3.10) - Installing urllib3 (2.2.3) - Installing requests (2.32.3) Writing lock file
Die erste Zeile besagt, dass Poetry die Umgebung im Cache erstellt hat. Die nächsten Zeilen informieren darüber, dass die Abhängigkeiten für requests
erfolgreich aufgelöst wurden und eine Sperrdatei generiert wurde (dazu später mehr).
Achten Sie auf den Umgebungsnamen: explore-poetry--I9GJYUn-py3.8
. Der Name enthält den Projektverzeichnisnamen, gefolgt von einer eindeutigen ID und dann der Python-Version, die von der Umgebung verwendet wird.
Beim nächsten Hinzufügen einer Abhängigkeit verwendet Poetry automatisch diese Umgebung, um Pakete zu installieren:
$ poetry add beautifulsoup4 Using version ^4.12.3 for beautifulsoup4 Updating dependencies Resolving dependencies... (1.1s) Package operations: 2 installs, 0 updates, 0 removals - Installing soupsieve (2.6) - Installing beautifulsoup4 (4.12.3) Writing lock file
Wenn Sie Poetry verwenden, wird in Ihrem Terminal nicht angezeigt, welches Poetry-Virtualisierungsumfeld aktiv ist. Um diese Informationen zu sehen, müssen Sie poetry env list
ausführen:
$ poetry env list explore-poetry--I9GJYUn-py3.8 (Activated)
Um mit der aktiven Poetry-Umgebung zu interagieren, können Sie poetry shell
ausführen:
$ poetry shell
Der Befehl öffnet eine neue Shell-Sitzung innerhalb der aktuellen, in der Sie Befehle wie python
oder pytest
ausführen können.
Zum Beispiel, um Python-Skripte auszuführen:
$ poetry shell $ python script.py
Zum Ausführen von Entwicklungs-Frameworks wie Streamlit:
# Innerhalb der Shell $ streamlit run app.py
Danach können Sie die Shell verlassen, indem Sie exit
aufrufen.
Alternativ können Sie Befehle in der Poetry-Shell ausführen, ohne sie zu betreten, indem Sie poetry run
verwenden:
$ poetry run python script.py $ poetry run streamlit run app.py
Konfigurieren der Python-Version
Wenn Sie poetry add
oder poetry install
ausführen, verwendet Poetry automatisch die im pyproject.toml
angegebene Python-Version. Um eine andere Python-Version anzugeben, können Sie den Befehl env use
ausführen:
$ poetry env use python3.11
Beachten Sie, dass Python 3.11 auf Ihrem Rechner systemweit installiert sein muss, damit der Befehl funktioniert.
Überprüfen Sie, ob Poetry die Umgebung mit der neuen Python-Version verwendet:
$ poetry env list explore-poetry--I9GJYUn-py3.11 (Activated) explore-poetry--I9GJYUn-py3.8
Beachten Sie, wie die neue Umgebung automatisch unserem Projekt zugeordnet ist (die IDs sind gleich). Sobald Sie Ihre Python-Version konfiguriert haben, können Sie Umgebungen mit anderen Versionen löschen, um Speicherplatz freizugeben:
$ poetry env remove python3.8
Beim Löschen einer Umgebung müssen Sie nur die Python-Version angeben. Sie können auch alle Umgebungen löschen und von vorne beginnen:
$ poetry env remove --all
Beachten Sie, dass der --all
Tag alle Umgebungen entfernt, die mit dem aktuellen Projekt verbunden sind, nicht die Umgebungen anderer Projekte.
Wenn Sie an Teamprojekten arbeiten, ist es oft besser, die virtuelle Umgebung im Projektverzeichnis zu belassen:
$ poetry config virtualenvs.in-project true
Dieser Befehl hat keine Auswirkungen, wenn Sie bereits eine Umgebung für das Projekt im Cache haben. Um eine lokale Umgebung zu erstellen, entfernen Sie zuerst alle vorhandenen aus dem Cache.
Dies erstellt einen .venv
Ordner in Ihrem Arbeitsverzeichnis, den Sie zu Ihrer .gitignore Datei hinzufügen sollten.
Abhängigkeiten mit Poetry verwalten
Die Abhängigkeitsverwaltung ist der Bereich, in dem Poetry glänzt. Es bietet umfassende Funktionen zum Spezifizieren, Installieren und Verwalten von Abhängigkeiten, damit Sie niemals in höllische Abhängigkeitskonflikte geraten.
In diesem Abschnitt erfahren Sie, wie Sie Abhängigkeiten hinzufügen und installieren, Abhängigkeitsgruppen erstellen, die Syntax für die Abhängigkeitsspezifikation in pyproject.toml
und Lock-Dateien.
Hinzufügen von Abhängigkeiten in Poetry
Bei der Verwendung von Poetry verwenden Sie den poetry add paket-name
Befehl, um Pakete von PyPI zu installieren, anstelle von pip install
. Dies hat einige Vorteile:
- Fügt automatisch das Paket mit der richtigen Versionseinschränkung zu
pyproject.toml
hinzu - Aktualisiert die Sperrdatei, um reproduzierbare Builds sicherzustellen
- Löst Abhängigkeiten auf, um Konflikte zu vermeiden
- Installiert das Paket und alle seine Abhängigkeiten in der virtuellen Umgebung
Zum Beispiel fügen wir zuerst Numpy als Abhängigkeit hinzu:
$ poetry add numpy
Sie sollten sofort einen Konflikt bei der Auflösung von Abhängigkeiten erhalten, der besagt, dass die Numpy-Version, die installiert wird, nicht mit Ihrer Python-Version kompatibel ist. Der Grund dafür ist, dass wir beim Wechsel zur Python 3.11-Umgebung die pyproject.toml
Datei nicht aktualisiert haben. Derzeit sieht sie so aus:
[tool.poetry.dependencies] python = "^3.8" requests = "^2.32.3" beautifulsoup4 = "^4.12.3"
Das Zirkumflexsymbol ^ wird verwendet, um anzuzeigen, dass unser explore-poetry
Projekt mit jeder Python-Version bis Python 4 kompatibel ist, aber der Bereich der Numpy-Versionen unterstützt nur Python-Versionen zwischen 3.8 und 3.12, was ein engerer Bereich ist. Der Konfliktfehler ergibt sich aus dieser Tatsache.
Um den Fehler zu beheben, sollten Sie den Python-Versionenbereich wie folgt aktualisieren:
python = ">=3.8, <3.12"
Sobald Sie diese Änderung vorgenommen haben, poetry add numpy
Befehl sollte wie erwartet funktionieren.
Sie haben gerade eine der besten Funktionen von Poetry beobachtet – Konflikte bei den Versionen zu erkennen, bevor Sie Pakete installieren, anstatt Sie später über die Versionsinkompatibilitäten zu informieren, wie es bei pip der Fall ist.
Die Syntax zur Angabe von Abhängigkeitsversionen
Poesie verwendet eine leistungsstarke Syntax, um eine breite Palette von Versionen für die beste Synchronisierung zwischen Abhängigkeiten anzugeben. Hier sind die am häufigsten verwendeten Symbole:
- Pflegezeichen (^): Ermöglicht Patch- und Nebenversionen, aber nicht Hauptversionen. Beispiel:
^1.2.3
ermöglicht Updates von 1.2.3 bis 1.9.9, aber nicht 2.0.0. - Tilde (~): Ermöglicht nur Patch-Updates. Beispiel:
~1.2.3
ermöglicht Updates von 1.2.3 bis 1.2.9, aber nicht 1.3.0. - Exakte Version: Gibt die genaue Versionsnummer an. Beispiel:
1.2.3
erlaubt nur Version 1.2.3 - Größer als (>): Erlaubt jede Version über der angegebenen. Beispiel:
>1.2.3
erlaubt 1.2.4, 1.3.0, 2.0.0 usw. - Kleiner als (<): Ermöglicht jede Version unterhalb der angegebenen. Beispiel:
<2.0.0
erlaubt alles unterhalb von 2.0.0. - Größer als oder gleich (>=): Ermöglicht die angegebene Version und höher. Beispiel:
>=1.2.3
erlaubt 1.2.3 und jede höhere Version. - Kleiner oder gleich (<=): Erlaubt die angegebene Version und darunter. Beispiel:
<=2.0.0
erlaubt 2.0.0 und alle niedrigeren Versionen. - Versionsbereich: Kombiniert Einschränkungen mit Kommata. Beispiel:
>=1.2.3,<2.0.0
erlaubt Versionen von 1.2.3 bis 1.9.9 - Platzhalter (*): Passt zu jeder Version. Beispiel:
1.2.*
passt zu jeder Version, die mit 1.2 beginnt
Natürlich können Sie diese nach Belieben kombinieren.
Abhängigkeitsgruppen in Poetry erstellen
In komplexen Projekten mit vielen beweglichen Komponenten müssen Sie oft mit verschiedenen Kategorien von Abhängigkeiten umgehen.
Zum Beispiel erstellen Sie in einem Machine-Learning-Projekt oft verschiedene Pipelines und Komponenten für die Datenerfassung, Datenbereinigung, Feature-Engineering, Modelltraining, Bereitstellung und Überwachung. Nicht zu vergessen, Sie müssen auch die Dokumentation vervollständigen und Tests durchführen. All diese Schritte haben ihr eigenes Ökosystem von Tools, und das Mischen ihrer Abhängigkeiten bläht Ihr endgültiges Vertriebspaket auf.
Mit Poetry können Sie Abhängigkeitsgruppen mit beliebigen Namen erstellen, sodass Sie sie nur bei Bedarf installieren können. Oder das Beste daran – Benutzer Ihres Pakets können auch wählen, die Teile zu installieren, die sie benötigen.
$ poetry add --group ui streamlit plotly dash $ poetry add --group dev black flake8 isort mypy pylint
Die obigen Befehle erstellen zwei Abhängigkeitsgruppen, ui
und dev
(falls sie noch nicht existieren), und zwei Untertabellen in pyproject.toml
:
[tool.poetry.dependencies] python = "^3.11" requests = "^2.32.3" beautifulsoup4 = "^4.12.3" numpy = "^2.1.3" [tool.poetry.group.ui.dependencies] streamlit = "^1.39.0" plotly = "^5.24.1" dash = "^2.18.2" [tool.poetry.group.dev.dependencies] black = "^24.10.0" flake8 = "^7.1.1" isort = "^5.13.2" mypy = "^1.13.0" pylint = "^3.3.1"
Auch wenn Abhängigkeitsgruppen getrennt sind, werden sie dennoch gegeneinander aufgelöst. Mit anderen Worten, wenn es einedev
-Abhängigkeit gibt, die mit einem Paket inui
in Konflikt steht, wird Poetry die Installation nicht durchführen.
In einigen Fällen können Sie optionale Abhängigkeitsgruppen erstellen oder bestehende Gruppen optional machen, sodass sie standardmäßig nicht installiert werden, wenn ein Benutzer Ihre Projektumgebung neu erstellt. Um dies zu tun, müssen Sie eine neue Unter-Tabelle in der pyproject.toml
-Datei erstellen. Zum Beispiel machen wir die ui
-Gruppe unten optional:
[tool.poetry.group.ui] optional = true [tool.poetry.group.ui.dependencies] streamlit = "^1.39.0" plotly = "^5.24.1" dash = "^2.18.2"
Es wird durch Setzen des optionalen
Parameters auf true
erledigt, bevor die Abhängigkeiten der Gruppe deklariert werden.
Reproduzieren eines Poetry-Projekts mit der poetry.lock-Datei
Wenn jemand Ihr GitHub-Repository mit einem Poetry-Projekt klonen würde, könnte er eine perfekte Kopie der virtuellen Umgebung für Ihr Projekt erstellen, indem er einen einzigen Befehl ausführt: poetry install
.
Der install Befehl verwendet die umfassendere poetry.lock
Datei. Im Gegensatz zu pyproject.toml
enthält die Lock-Datei:
- Die genauen Versionen der Hauptabhängigkeiten sind in pyproject.toml
- Die genauen Versionen der Abhängigkeiten der Hauptabhängigkeiten (transitive Abhängigkeiten)
Zum Beispiel, requests
hängt von urllib3, certifi, charset-normalizer
und idna
. Ohne eine Sperrdatei könnten diese Unterabhängigkeiten auf verschiedenen Maschinen zu unterschiedlichen Versionen führen.
Die Sperrdatei stellt sicher, dass alle Mitglieder Ihres Teams dieselben Abhängigkeitsversionen erhalten und das Problem „Bei mir funktioniert es“ verhindert wird.
Der Unterschied zwischen poetry add und poetry install
Wir erklären den Unterschied zwischen add
und install
Befehlen von Poetry anhand eines Anwendungsbeispiels.
Angenommen, Sie arbeiten an einem Projekt zur Betrugsbekämpfung. Sie fügen Ihre anfänglichen Abhängigkeiten hinzu:
$ poetry add pandas scikit-learn
Dies fügt die Pakete zur Sperre und pyproject.toml
Dateien hinzu. Dann klonen Ihre Kollegen das Repo:
$ git clone fraud-detection-repo-link $ cd fraud-detection $ poetry install
Sie führen den install
Befehl aus, um alles zu installieren, was in der Sperrdatei aufgeführt ist.
Später müssen Sie ein neues Paket hinzufügen:
$ poetry add xgboost
Ihr Kollege zieht die Änderungen:
$ git pull $ poetry install
Sie führen den install
Befehl aus, um das neue Paket zu installieren. Also,
- Verwenden Sie
poetry
add wenn Sie neue Abhängigkeiten hinzufügen - Verwenden Sie
poetry install
, wenn Sie ein vorhandenes Projekt einrichten müssen. - Kommitieren Sie
pyproject.toml
undpoetry.lock
ins Versionskontrollsystem.
Abhängigkeitsgruppen mit dem poetry install Befehl installieren.
Zuvor haben wir gelernt, wie man Abhängigkeiten in Poetry gruppieren kann. Wenn Sie poetry install
ausführen, werden standardmäßig alle nicht optionalen Gruppen installiert, was in allen Fällen möglicherweise nicht das ist, was Sie möchten.
Zum Beispiel könnten Sie ein Repository nur klonen, um an der Dokumentation zu arbeiten. Oder Sie möchten am Hauptcode des Repositorys arbeiten, aber nicht an den Dokumentations- und Testaspekten. Der install
Befehl ist flexibel genug, um all diese Fälle abzudecken:
Ausschluss bestimmter Gruppen:
$ poetry install --without ui,dev
Installation optionaler Gruppen:
# Installation der optionalen Dokumentationsgruppe $ poetry install --with docs
Nur bestimmte Gruppen installieren:
$ poetry install --only ui
Nur die Laufzeitabhängigkeiten des Projekts installieren (die außerhalb von Gruppen erwähnten Abhängigkeiten, hinzugefügt mit einfachen poetry add Paket
Befehlen):
$ poetry install --only main
Abhängigkeiten in Poetry entfernen
Das Löschen einer Abhängigkeit ist einfach mit dem remove
Befehl:
$ poetry remove requests
Dies entfernt requests
aus den Hauptprojekt-Abhängigkeiten. Um ein Paket aus einer Gruppenabhängigkeit zu entfernen, können Sie erneut das --group
Tag verwenden:
$ poetry remove streamlit --group ui
Der remove
Befehl deinstalliert das Paket sauber, zusammen mit seinen transitiven Abhängigkeiten.
Ein Projekt mit Poetry auf PyPI veröffentlichen
Wenn Ihr Projekt zur Verteilung bereit ist, ermöglicht das Veröffentlichen auf PyPI (Python Package Index) anderen Entwicklern, Ihren Code einfach zu installieren und zu verwenden über pip
. Poetry macht diesen Prozess mit nur zwei Befehlen zum Kinderspiel:
$ poetry build # Distributionen erstellen $ poetry publish # Auf PyPI veröffentlichen
Bevor Sie diese Befehle ausführen, sollten Sie Ihre PyPI-Anmeldeinformationen korrekt einrichten. Erstellen Sie zunächst Ihre Konten unter:
Konfigurieren Sie Poetry mit Ihren Anmeldeinformationen:
$ poetry config pypi-token.pypi your-pypi-token $ poetry config pypi-token.testpypi your-test-pypi-token
Testen Sie nun zuerst Ihr Paket:
# Konfigurieren Sie das TestPyPI-Repository $ poetry config repositories.testpypi https://test.pypi.org/legacy/ # Veröffentlichen Sie auf TestPyPI $ poetry build $ poetry publish -r testpypi
Nach der Veröffentlichung auf TestPyPI können Sie versuchen, Ihr Paket zu installieren, um zu überprüfen, ob alles gut funktioniert:
$ pip install --index-url https://test.pypi.org/simple/ your-package-name
Wenn alles gut läuft, können Sie es auf PyPI selbst veröffentlichen:
$ poetry publish
Best Practices beim Arbeiten mit Poetry
Es gibt viele Fallstricke und bewährte Verfahren bei der Verwendung von Poetry, und natürlich können wir sie nicht alle in einem einzigen Artikel erwähnen. Hier sind jedoch einige gängige, die Sie sofort anwenden können:
- Verwenden Sie immer virtuelle Umgebungen – Poetry erstellt sie automatisch für jedes Projekt
- Behalten Sie Ihre
pyproject.toml
Datei unter Versionskontrolle, aber schließen Siepoetry.lock
für Bibliotheken aus - Enthalten Sie
poetry.lock
in der Versionskontrolle für Anwendungen, um reproduzierbare Builds zu gewährleisten - Verwenden Sie semantische Versionierung für die Versionen Ihrer Pakete (Hauptversion.Nebenversion.Patch). Sie können
poetry version patch/minor/major
-Befehle verwenden, um die Paketversionen um eins zu erhöhen. Zum Beispiel ändertpoetry version major
die Version von 0.2.0 zu 1.0.0 in Ihrerpyproject.toml
-Datei. - Geben Sie die Abhängigkeitsversionsbeschränkungen sorgfältig an, um Konflikte zu vermeiden
- Aktualisieren Sie regelmäßig Abhängigkeiten mit
poetry update
aber testen Sie gründlich nach den Updates - Verwenden Sie
poetry add --group dev
für Entwicklungsmodule, um sie getrennt zu halten - Dokumentieren Sie alle Zwecke der Abhängigkeiten in pyproject.toml mit Kommentaren
- Führen Sie
poetry check
vor Commits aus, um die Syntax der pyproject.toml zu validieren. Sie können auch pre-commit Hooks in Betracht ziehen. - Verwenden Sie
poetry export
, umrequirements.txt
bei Bedarf für andere Tools zu generieren. - Halten Sie Produktionsabhängigkeiten minimal – verschieben Sie optionale Funktionen in Extras
- Testen Sie die Installation Ihres Pakets in einer sauberen Umgebung, bevor Sie es veröffentlichen
- Verwenden Sie TestPyPI, bevor Sie zum Haupt-PyPI-Repository veröffentlichen
- Führen Sie ein klares
CHANGELOG.md
zur Verfolgung von Versionsänderungen - Verwenden Sie
poetry run
für die Skriptausführung, um die korrekte Verwendung der Umgebung sicherzustellen
Fazit und nächste Schritte
Poesie hat die Python-Abhängigkeitsverwaltung revolutioniert, indem sie eine robuste, intuitive Lösung für gängige Paketverwaltungsprobleme bietet. Der leistungsstarke Funktionsumfang für die Abhängigkeitsauflösung, das Verwalten virtueller Umgebungen und das Veröffentlichen von Projekten machen es zu einem unschätzbaren Werkzeug für die moderne Python-Entwicklung.
Um Ihre Python-Entwicklung fortzusetzen, sollten Sie diese umfassenden Lernpfade erkunden:
- Python-Programmiertrack — Meistern Sie grundlegende und fortgeschrittene Konzepte von Python
- Zwischen Python — Verbessern Sie Ihre Python-Fähigkeiten
- Grundlagen der Python-Daten — Erlernen Sie wesentliche Datenmanipulationsfähigkeiten
- Assoziierter Datenwissenschaftler in Python — Tauchen Sie ein in die Datenwissenschaft mit Python
Denken Sie daran, dass effektives Abhängigkeitsmanagement nur ein Aspekt der professionellen Python-Entwicklung ist. Wenn Sie sich weiterentwickeln, werden Tools wie Poetry Ihnen helfen, wartbare und zuverlässige Python-Projekte zu erstellen.