Python Tools

Veröffentlichung eines Python-Pakets auf PyPI mit Poetry

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.


4 Minuten Lesezeit
02 Nov 2024
Veröffentlichung eines Python-Pakets auf PyPI mit Poetry

Was lerne ich in diesem Kurs?

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.

Voraussetzungen

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:

Poetry installieren

Erstellen eines neuen Pakets mit Poetry

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.

Neue Dependencies hinzufügen

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

Anlegen von Dependency-Gruppen

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

Testen des Pakets

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.

Anmeldung bei PyPI

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 durch den tatsächlichen Token-Wert. Dadurch speichert Poetry Deine PyPI-Anmeldedaten und Du kannst das Paket sicher veröffentlichen.

Veröffentlichung des Pakets auf PyPI

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.

Aktualisieren des Pakets

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.

Online- und Präsenzkurse zum Thema

Finden Sie interessante und zum Thema passende Kurse

Python Einführungskurs

Beginnen Sie Ihre Programmierkarriere mit unserem Python-Einführungskurs. Erlernen Sie grundlegende Konzepte wie Variablen, Schleifen und Datenstrukturen und bauen Sie eine solide Basis in Python auf. Durch praxisnahe Projekte und kompetente Anleitung entwickeln Sie wertvolle Programmierfähigkeiten.

5 Tage Vollzeit auch als Feierabendkurs Online

Nächster Termin: 20. Januar 2025
Preis pro Person: 1600,00 EUR

Rabattaktion: 3 für den Preis von 2!

Django Framework für Fortgeschrittene

Entdecken Sie die fortgeschrittenen Funktionen von Django in unserem intensiven Aufbaukurs. Dieser Kurs richtet sich an Entwickler, die bereits mit den Grundlagen von Django vertraut sind und ihre Fähigkeiten auf das nächste Level bringen möchten. Lernen Sie, wie Sie komplexe Anwendungen mit Docker erstellen, eine CD/CI-Pipeline anlegen, APIs integrieren und das Projekt auf einen Server deployen.

5 Tage Vollzeit Online

Nächster Termin: 10. März 2025
Preis pro Person: 1900,00 EUR

Rabattaktion: 3 für den Preis von 2!

REST Api entwicklen mit Django

In diesem intensiven 5-Tage-Seminar lernen Entwickler, professionelle REST-APIs mit dem Django REST Framework zu erstellen, zu optimieren und zu testen.

5 Tage Vollzeit Online

Nächster Termin: 27. Januar 2025
Preis pro Person: 1600,00 EUR

Rabattaktion: 3 für den Preis von 2!

Data Science mit Python

In diesem dreitägigen Data Science Seminar mit Python lernen Teilnehmer, wie sie Daten effizient mit Python-Datenstrukturen verarbeiten, analysieren und visualisieren. Die Schulung umfasst die Arbeit mit NumPy und Pandas sowie die Erstellung von aussagekräftigen Diagrammen mit Matplotlib.

3 Tage Vollzeit Online

Nächster Termin: noch kein Datum bekannt
Preis pro Person: 1200,00 EUR

Rabattaktion: 3 für den Preis von 2!