Poetry vereinfacht den Veröffentlichungsprozess von Python-Paketen auf PyPI erheblich. Durch wenige einfache Befehle kannst Du Dein Paket veröffentlichen und verwalten. Sobald Dein Paket auf PyPI verfügbar ist, können andere Entwickler es installieren und verwenden.
Poetry ist ein beliebtes Tool zum Verwalten von Abhängigkeiten und Erstellen von Python-Paketen. Wenn Du ein eigenes Python-Paket auf dem Python Package Index (PyPI) veröffentlichen möchtest, kannst Du dies einfach mit Poetry tun. In diesem Tutorial zeige ich Dir, wie Du ein Paket vorbereitest und auf PyPI veröffentlichst.
Um ein Paket auf PyPI zu veröffentlichen, benötigst Du ein PyPI-Konto. Gehe dazu auf pypi.org und registriere Dich, falls Du noch kein Konto hast. Installiere auch Poetry, falls noch nicht geschehen. Du kannst Poetry unter Linux mit dem folgenden Befehl installieren:
curl -sSL https://install.python-poetry.org | python3 -
Falls du dich auf einem anderen System befindest oder curl kein Weg für dich ist, gibt es auch noch andere Möglichkeiten, Peotry zu installieren:
Beginne mit der Erstellung eines neuen Python-Projekts mit Poetry. Wechsle in das Verzeichnis, in dem das Paket gespeichert werden soll, und führe den folgenden Befehl aus:
poetry new mein_paket
Poetry erstellt eine Ordnerstruktur mit der Datei pyproject.toml, in der alle Paketinformationen und Abhängigkeiten definiert werden.
mein_paket
├── pyproject.toml
├── README.md
├── mein_paket
│ └── __init__.py
└── tests
└── __init__.py
In der Datei pyproject.toml findest Du Einträge wie name, version, description, und author. Ändere diese Einträge nach Deinen Anforderungen, da sie die Metadaten Deines Pakets auf PyPI festlegen. Ein Beispiel für eine bearbeitete pyproject.toml sieht so aus:
[tool.poetry]
name = "mein-paket"
version = "0.1.0"
description = ""
authors = ["Captain Solaris <hello@example.com>"]
readme = "README.md"
[tool.poetry.dependencies]
python = "^3.12"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
Die Zeile python gibt die Python-Version an, die das Paket benötigt. In diesem Beispiel wird Python 3.12 oder höher vorausgesetzt.
Um neue Abhängigkeiten hinzuzufügen, können die entweder unter den Dependencies manuell oder per folgendem Befehlt interaktiv eingetragen werden.
poetry add pendulum
Um zu sehen, wo die virtuelle Umgebung für das Projekt angelegt wurde, in die die Pakete installiert werden, kann dieser Befehl genutzt werden
poetry env info
Um eine Datei mit Poetry zu starten, wird der RUN-Befehl benötigt.
poetry python run main.py
Mit dem groups-Befehl lassen sich Gruppen von Dependencies anlegen. Im folgenden Beispiel wird eine Gruppe dev angelegt und ihr einige Dependencies zugewiesen.
poetry add --group dev black flake8 isort mypy pylint
automatisch wird die Gruppe in die pyproject.toml eingetragen.
[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"
Um einen Linter zu starten, führt man wieder das RUN Command aus:
poetry run black .
Löschen von Dependencies aus einer Gruppe führt über remove:
poetry remove --group dev ruff
Um beim Installieren der Dependencies in einer anderen Umgebung, zum Beispiel einer Produktiv-Umgebung, nur die Main-Dependencies zu installieren, muss der Install-Befehl so ausgeführt werden.
rm poetry.lock
poetry env remove --all
poetry install --without test,dev
Bevor Du das Paket veröffentlichst, teste es lokal. Wechsle dazu in das Projektverzeichnis und baue das Paket mit Poetry. Es werden nur die Dependencies genutzt, die unter den Main-Dependencies eingetragen sind. Dev und Test-Gruppen werden im Build-Prozess ignoriert.
poetry build
Poetry erstellt im Ordner dist zwei Dateien: ein Wheel und eine Source Distribution (tar.gz). Diese beiden Dateien sind die distributablen Versionen Deines Pakets. Installiere das Paket lokal, um sicherzustellen, dass alles funktioniert
pip install dist/mein_paket-0.1.0-py3-none-any.whl
Wenn alles wie erwartet läuft, bist Du bereit für die Veröffentlichung.
Für die Veröffentlichung auf PyPI muss Poetry Deine Anmeldedaten kennen. Führe den folgenden Befehl aus, um Dich bei PyPI anzumelden und einen API-Token zu erstellen
poetry config pypi-token.pypi <DEIN_API_TOKEN>
Gehe auf pypi.org, melde Dich an, und gehe zu Account Settings. Erstelle einen neuen API-Token und ersetze
Wenn alle vorherigen Schritte erfolgreich abgeschlossen sind, kannst Du das Paket mit einem einzigen Befehl auf PyPI veröffentlichen
poetry publish --build
Mit der Option --build erstellt Poetry das Paket erneut und lädt es auf PyPI hoch. Falls alles korrekt ist, erscheint Dein Paket in wenigen Minuten auf pypi.org und ist damit öffentlich verfügbar.
Falls Du später eine neue Version des Pakets veröffentlichen möchtest, erhöhe die Versionsnummer in der Datei pyproject.toml. Ändere z. B. die Zeile version von 0.1.0 auf 0.2.0. Führe dann erneut poetry publish --build aus, um die aktualisierte Version auf PyPI zu veröffentlichen.
[tool.poetry]
version = "0.2.0"
Durch das Ändern der Versionsnummer und erneutes Veröffentlichen stellst Du sicher, dass Benutzer immer die neueste Version Deines Pakets erhalten.