Einstieg in Poetry: Das Python-Dev-Tool, das Sie verwenden sollten
Wenhao Wang
Dev Intern · Leapcell

Umfassende Anfängeranleitung für den Python Package Manager Poetry: Eine umfassende Analyse von den Grundlagen bis zur praktischen Anwendung
1. Einführung: Warum brauchen wir Poetry?
Im Bereich der Python-Entwicklung war das Paketmanagement schon immer ein zentrales Thema bei der Projektwartung. Obwohl das traditionelle Tool pip
grundlegende Installationsanforderungen erfüllen kann, werden mit zunehmender Größe der Projekte seine Schwächen bei der Auflösung von Abhängigkeiten und der Verwaltung virtueller Umgebungen allmählich deutlich. Wenn beispielsweise Pakete manuell entfernt werden, können Abhängigkeitsbeziehungen nicht automatisch behandelt werden, was zu Umweltchaos oder Abhängigkeitskonflikten führen kann. Als eine neue Generation von Paketverwaltungstools integriert Poetry nicht nur Funktionen zur Verwaltung virtueller Umgebungen und zur Auflösung von Abhängigkeiten, sondern bietet auch eine klarere Projektkonfiguration und einen klareren Release-Prozess, was es zu einer der derzeit bevorzugten Lösungen für Python-Entwickler macht.
Dieser Artikel konzentriert sich auf die Kernfunktionen von Poetry und kombiniert spezifische Betriebsbeispiele, um den Lesern zu helfen, dieses leistungsstarke Tool vom Einstieg bis zur Beherrschung zu meistern. Der Inhalt umfasst Installation und Konfiguration, Verwaltung virtueller Umgebungen, Abhängigkeitsoperationen, gängige Befehle und praktische Anwendungsszenarien, geeignet für Anfänger und Entwickler, die Projektmanagementprozesse optimieren möchten.
2. Analyse der Kernkonzepte von Poetry
2.1 Was ist Poetry?
Poetry ist ein integriertes Python-Paketverwaltungstool, und seine offizielle Positionierung ist "Dependency Management for Python". Es verfügt nicht nur über die Installations- und Löschfunktionen traditioneller Paketmanager (wie pip
), sondern bietet auch zusätzliche Funktionen:
- Automatische Verwaltung virtueller Umgebungen: Es verfügt über integrierte
virtualenv
-Funktionen, sodass keine separaten Tools für virtuelle Umgebungen installiert werden müssen. - Analyse von Abhängigkeitsbeziehungen: Es kann Versionskonflikte zwischen Paketen automatisch behandeln, um die Stabilität der Projektumgebung zu gewährleisten.
- Projektkonfiguration und -freigabe: Es kann Projektmetadaten und -abhängigkeiten einheitlich über
pyproject.toml
verwalten und Paketverpackung und -freigabe unterstützen.
2.2 Erläuterung der Schlüsselbegriffe
- Verwaltung virtueller Umgebungen: Durch Isolieren der Abhängigkeitsumgebungen verschiedener Projekte werden Versionsverschmutzungen durch globale Installation vermieden. Poetry erstellt standardmäßig automatisch virtuelle Umgebungen, und der Pfad kann konfiguriert werden.
- Abhängigkeitsverwaltung (Dependency Management): Es verwaltet nicht nur direkt installierte Pakete, sondern verfolgt auch deren zugrunde liegende Abhängigkeiten, um die Kompatibilität aller Komponenten sicherzustellen.
- Abhängigkeitsauflösung (Dependency Resolution): Dies ist der Kernvorteil von Poetry. Es kann automatisch die optimale Abhängigkeitskombination berechnen, die den Versionsregeln entspricht, und komplexe Konflikte lösen, die
pip
nicht bewältigen kann.
2.3 Warum pip
aufgeben?
Der Hauptfehler von pip
liegt in seiner mangelnden Fähigkeit zur Auflösung von Abhängigkeiten. Zum Beispiel:
- Beim Entfernen von Paketen kann nicht festgestellt werden, ob sie von anderen Komponenten abhängig sind, was zu einem Zusammenbruch der Umgebung führen kann.
- Das manuelle Warten von
requirements.txt
ist fehleranfällig, insbesondere beim Umgang mit Versionsbereichen, da es keine automatisierte Unterstützung gibt. - Virtuelle Umgebungen müssen separat mit
venv
verwaltet werden, und der Prozess ist umständlich.
Anwendungsszenarien: pip
eignet sich für einfache Skripte oder temporäre Aufgaben, während Poetry besser für mittlere und große Projekte, Teamarbeit oder Szenarien geeignet ist, die eine strenge Abhängigkeitsverwaltung erfordern.
3. Installation und grundlegende Konfiguration von Poetry
3.1 Auswahl der Installationsmethoden
Poetry bietet zwei offiziell empfohlene Installationsmethoden, die beide auf der Grundlage unabhängiger virtueller Umgebungen bereitgestellt werden, um die Isolation von der Projektumgebung sicherzustellen:
Methode 1: Verwenden Sie das offizielle Installationsskript (empfohlen)
Anwendbare Systeme: macOS/Linux/WSL/Windows
# macOS/Linux/WSL curl -sSL https://install.python-poetry.org | python3 - # Windows (PowerShell) (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -
Nach der Installation wird Poetry in einem systemspezifischen Verzeichnis (z. B. ~/.local/bin
unter macOS) platziert, und Sie müssen die Umgebungsvariable PATH
manuell konfigurieren, um den Befehl poetry
direkt aufzurufen.
Methode 2: Installieren über pipx
Anwendbare Systeme: pipx
muss im Voraus installiert werden
pipx install poetry
pipx
erstellt automatisch eine isolierte Umgebung, um Poetry zu installieren, die für Benutzer geeignet ist, die dieses Tool gewohnt sind.
3.2 Konfiguration von Umgebungsvariablen
Nach der Installation müssen Sie den Pfad der ausführbaren Poetry-Datei zum System PATH
hinzufügen:
macOS/Linux
Bearbeiten Sie die Shell-Konfigurationsdatei (z. B. .zshrc
oder .bashrc
) und fügen Sie Folgendes hinzu:
export PATH="$PATH:$HOME/.local/bin"
Speichern und starten Sie das Terminal neu und geben Sie dann poetry --version
ein, um die Installation zu überprüfen.
Windows
Gehen Sie zu "Systemeigenschaften → Erweitert → Umgebungsvariablen", bearbeiten Sie PATH
in den Benutzervariablen und fügen Sie den Installationspfad hinzu (z. B. %APPDATA%\Python\Scripts
).
3.3 Alias festlegen (optional)
Um die Befehlseingabe zu vereinfachen, können Sie einen Alias in der Shell-Konfiguration hinzufügen:
alias p='poetry' # Vereinfachen Sie Poetry zu p
4. Von Grund auf neu: Initialisieren von Projekten und virtuellen Umgebungen
4.1 Initialisieren von Projekten
Erstellen Sie ein neues Projektverzeichnis und initialisieren Sie Poetry:
mkdir poetry-demo && cd poetry-demo poetry init
Nach der Ausführung fordert das System die Benutzer auf, Projektmetadaten (wie Name, Version, Autor usw.) einzugeben, und die meisten Optionen können Standardwerte verwenden, indem Sie die Eingabetaste drücken. Wichtige Schritte:
- Wenn Sie gefragt werden, ob Abhängigkeiten interaktiv definiert werden sollen, wählen Sie
no
und installieren Sie sie später manuell. - Bestätigen Sie den Inhalt der generierten
pyproject.toml
und generieren Sie abschließend die Projektkonfigurationsdatei.
Zu diesem Zeitpunkt ist die Projektstruktur:
poetry-demo/
└── pyproject.toml
4.2 Verwaltung virtueller Umgebungen
4.2.1 Standardverhalten und Probleme
Poetry speichert virtuelle Umgebungen standardmäßig im System-Cache-Verzeichnis (z. B. ~/Library/Caches/pypoetry/virtualenvs
unter macOS), und die Namenskonvention ist Projektname - Zufallsstring - Python-Version
. Obwohl diese Methode eine Isolation erreicht, ist sie der Projektmigration und der intuitiven Verwaltung nicht förderlich.
4.2.2 Anpassen des Pfads der virtuellen Umgebung
Es wird empfohlen, virtuelle Umgebungen im Projektverzeichnis zu speichern, um eine Eins-zu-Eins-Bindung mit dem Projekt sicherzustellen:
poetry config virtualenvs.in-project true # Auf die Innenseite des Projekts einstellen poetry env remove python # Entfernen Sie die alte Umgebung (falls vorhanden) poetry env use python # Erstellen Sie die Umgebung neu, und der Pfad ist .venv unter dem Projektstammverzeichnis
Zu diesem Zeitpunkt ist der Pfad der virtuellen Umgebung ./.venv
, und die Startmethode ist:
poetry shell # Geben Sie die virtuelle Umgebung ein exit # Beenden
5. Kernoperationen der Abhängigkeitsverwaltung
5.1 Installieren von Paketen
5.1.1 Installieren von Hauptabhängigkeiten (Produktionsumgebung)
poetry add flask # Installieren Sie Flask und behandeln Sie Abhängigkeiten automatisch
Nach der Installation fügt pyproject.toml
Flask = "^2.1.1"
hinzu, und gleichzeitig wird poetry.lock
generiert, um alle zugrunde liegenden Abhängigkeiten (wie click
, jinja2
usw.) aufzuzeichnen.
5.1.2 Installieren von Entwicklungsabhängigkeiten
Entwicklungstools (wie Test-Frameworks und Codeformatierungstools) sollten im Block dev - dependencies
installiert werden, um eine Beeinträchtigung der Produktionsumgebung zu vermeiden:
poetry add black --dev # Alter Versionsbefehl (Poetry <2.0) poetry add black -G dev # Neuer Versionsbefehl (Poetry >=2.0, empfohlen)
Zu diesem Zeitpunkt fügt pyproject.toml
Folgendes hinzu:
[tool.poetry.dev-dependencies] black = "^22.3.0"
5.1.3 Angeben von Versionsbereichen
Poetry unterstützt flexible Versionsregeln, um Wartungskosten zu vermeiden, die durch feste Versionen verursacht werden:
- ^ Symbol: Ermöglicht Patch- und Nebenversionsaktualisierungen (z. B. bedeutet
^4.2.9
>=4.2.9 und <5.0.0)poetry add django@^4.2.9
- ~ Symbol: Ermöglicht nur Patch-Versionsaktualisierungen (z. B. bedeutet
~4.2.9
>=4.2.9 und <4.3.0)poetry add django@~4.2.9
- Feste Version: Sperren Sie die Version strikt (z. B.
==4.2.9
)poetry add django==4.2.9
5.2 Aktualisieren und Entfernen von Paketen
5.2.1 Aktualisieren von Paketen
poetry update # Aktualisieren Sie alle aktualisierbaren Pakete poetry update flask # Nur Flask aktualisieren
Die Aktualisierungslogik basiert auf den Versionsregeln in pyproject.toml
und behebt automatisch Abhängigkeitskonflikte.
5.2.2 Entfernen von Paketen
poetry remove flask # Entfernen Sie Flask und nicht verwendete zugrunde liegende Pakete
Wichtiger Vorteil: Poetry überprüft die Abhängigkeitsbeziehung und entfernt nur Komponenten, die tatsächlich nicht mehr verwendet werden. Wenn beispielsweise black
von click
abhängt, bleibt click
erhalten, wenn flask
entfernt wird.
5.3 Anzeigen der Abhängigkeitsliste
5.3.1 Auflisten aller Pakete
poetry show # Zeigen Sie alle installierten Pakete (einschließlich Abhängigkeiten) an
5.3.2 Anzeigen der Abhängigkeitshierarchie in Baumstruktur
poetry show --tree # Zeigen Sie Abhängigkeitsbeziehungen in einem Baumdiagramm an
Beispielausgabe:
flask 2.1.1 Ein einfaches Framework zum Erstellen komplexer Webanwendungen.
├── click >=8.0
│ └── colorama *
├── importlib-metadata >=3.6.0
│ └── zipp >=0.5
...
6. Erweiterte Operationen und praktische Befehle
6.1 Generieren von requirements.txt
(kompatibel mit alten Systemen)
Obwohl Poetry die Verwendung von poetry.lock
empfiehlt, wird requirements.txt
in einigen Szenarien (z. B. Docker-Bereitstellung) weiterhin benötigt:
poetry export -f requirements.txt -o requirements.txt --without-hashes
Parameterbeschreibung:
-f
: Geben Sie das Ausgabeformat alsrequirements.txt
an-o
: Geben Sie den Ausgabedateinamen an--without-hashes
: Entfernen Sie Hash-Werte (nicht obligatorisch, je nach Bedarf entschieden)
6.2 Liste der gängigen Befehle
Befehl | Beschreibung |
---|---|
poetry init | Initialisieren Sie das Projekt und generieren Sie pyproject.toml |
poetry add | Installieren Sie Pakete in den Produktionsabhängigkeiten |
poetry add -G dev | Installieren Sie Pakete in den Entwicklungsabhängigkeiten |
poetry install | Installieren Sie alle Abhängigkeiten gemäß poetry.lock |
poetry update | Aktualisieren Sie Pakete |
poetry show --tree | Zeigen Sie Abhängigkeitsbeziehungen in einer Baumstruktur an |
poetry shell | Starten Sie die virtuelle Umgebung |
poetry export | Geben Sie requirements.txt aus |
poetry lock | Sperren Sie Abhängigkeitsversionen und aktualisieren Sie poetry.lock |
7. Häufige Anwendungsszenarien und Lösungen
7.1 Neuer Projekteinrichtungsprozess
- Erstellen Sie ein Verzeichnis und initialisieren Sie:
mkdir my-project && cd my-project && poetry init
- Konfigurieren Sie die virtuelle Umgebung innerhalb des Projekts:
poetry config virtualenvs.in-project true
- Starten Sie die Umgebung und installieren Sie Abhängigkeiten:
poetry shell && poetry add flask
7.2 Migrieren bestehender Projekte zu Poetry
- Sichern Sie die ursprüngliche
requirements.txt
- Initialisieren Sie Poetry:
poetry init --no-interaction
(schnelles Generieren der Grundkonfiguration) - Installieren Sie Abhängigkeiten einzeln (empfohlen):
poetry add package-name
- Oder Batch-Migration (hohes Risiko):
cat requirements.txt | xargs poetry add
- Oder Batch-Migration (hohes Risiko):
- Löschen Sie die alte
requirements.txt
und verwenden Siepoetry.lock
, um Abhängigkeiten zu verwalten
7.3 Neuerstellen der Umgebung über Hosts hinweg
- Kopieren Sie den Projektcode:
git clone repo-url && cd project-dir
- Installieren Sie Abhängigkeiten:
poetry install
(erstellt automatisch die Umgebung gemäßpoetry.lock
)
7.4 Wiederaufbau der virtuellen Umgebung
Löschen Sie direkt das Verzeichnis .venv
im Projekt und führen Sie dann Folgendes aus:
poetry shell # Baut die Umgebung automatisch neu auf und startet sie
7.5 Best Practices für die Docker-Bereitstellung
Vermeiden Sie die Installation von Poetry im Docker-Image und verwenden Sie die Multi-Stage-Konstruktion (Multi-stage Build):
- Erste Phase: Verwenden Sie Poetry, um Abhängigkeiten zu erstellen
FROM python:3.8-slim AS build RUN pip install poetry WORKDIR /app COPY pyproject.toml poetry.lock ./ RUN poetry export -f requirements.txt --without-hashes -o requirements.txt
- Zweite Phase: Installieren Sie nur Produktionsabhängigkeiten
FROM python:3.8-slim COPY --from=build /app/requirements.txt ./ RUN pip install -r requirements.txt
8. Zusammenfassung: Die Vorteile und die Lernkurve von Poetry
8.1 Kernvorteile
- Leistungsstarke Abhängigkeitsauflösung: Es kann komplexe Versionskonflikte automatisch behandeln und die Umweltstabilität gewährleisten.
- Integrierte virtuelle Umgebung: Es sind keine zusätzlichen Tools erforderlich, und es kann mit einem Klick erstellt und verwaltet werden.
- Einheitliche Projektkonfiguration: Es verwaltet alle Metadaten über
pyproject.toml
, was die Zusammenarbeit im Team erleichtert. - Vereinfachter Release-Prozess: Es verfügt über integrierte Verpackungsfunktionen und unterstützt die direkte Freigabe für PyPI.
8.2 Lernvorschläge
- Beginnen Sie mit kleinen Projekten: Üben Sie zuerst grundlegende Befehle (wie
add
,shell
,show
) in einfachen Projekten. - Verstehen Sie Konfigurationsdateien: Untersuchen Sie eingehend die Rollenunterschiede zwischen
pyproject.toml
undpoetry.lock
. - Beachten Sie offizielle Dokumente: Poetry-Dokumente sind detailliert, achten Sie insbesondere auf Versionsregeln und Befehlsparameterbeschreibungen.
8.3 Empfohlene Anwendungsszenarien
- Mittlere und große Teamprojekte, die ein striktes Abhängigkeitsmanagement erfordern.
- Projekte mit häufigen Abhängigkeitsaktualisierungen oder komplexen Abhängigkeitsbeziehungen.
- Projekte, die eine umgebungsübergreifende Bereitstellung erfordern (wie Docker, Kubernetes).
Durch die Beherrschung der Kernfunktionen von Poetry können Entwickler die Effizienz des Projektmanagements erheblich verbessern, das Risiko von Abhängigkeitskonflikten verringern und den Bereitstellungsprozess vereinfachen. Obwohl am Anfang Lernkosten entstehen, lohnt sich langfristig die Stabilität und Produktivitätssteigerung, die es mit sich bringt, auf jeden Fall. Beginnen Sie sofort mit der Verwendung von Poetry und erleben Sie den Komfort der modernen Python-Entwicklung!
Leapcell: Das Beste vom Serverless Webhosting
Empfehlen Sie abschließend eine Plattform, die sich am besten für die Bereitstellung von Python-Diensten eignet: Leapcell
🚀 Mit Ihrer Lieblingssprache entwickeln
Entwickeln Sie mühelos in JavaScript, Python, Go oder Rust.
🌍 Unbegrenzt Projekte kostenlos bereitstellen
Bezahlen Sie nur für das, was Sie verwenden – keine Anforderung, keine Gebühren.
⚡ Pay-as-You-Go, keine versteckten Kosten
Keine Leerlaufgebühren, nur nahtlose Skalierbarkeit.
📖 Entdecken Sie unsere Dokumentation
🔹 Folgen Sie uns auf Twitter: @LeapcellHQ