Python und die Poesie der Pakete: Poetry 1.0 hilft beim Dependency-Management

Das Open-Source-Tool hat cargo für Rust und composer für PHP als Vorbild und möchte das Verwalten von Abhängigkeiten vereinfachen.

In Pocket speichern vorlesen Druckansicht 6 Kommentare lesen
Python und die Poesie der Pakete: Poetry 1.0 hilft beim Dependency-Management
Lesezeit: 3 Min.
Inhaltsverzeichnis

Das Python-Werkzeug Poetry ist in Version 1.0 erschienen. Damit hat das Tool zum Dependency-Management und zur Paketverwaltung für Python einen stabilen Stand erreicht. Wer bereits frühere Versionen bis 0.12.x von Poetry genutzt hat, muss allerdings beim Upgrade aufpassen, da das 1.0-Release nicht rückwärtskompatibel ist.

Poetry soll das Dependency-Management und das Erstellen von Paketen unter Python vereinfachen. Eine zentrale Datei namens pyproject.toml ersetzt setup.py, requirements.txt, setup.cfg, MANIFEST.in und Pipfile. Die Datei enthält eine Beschreibung des Projekts inklusive der Lizenzinformationen und dem Verweis auf eine Readme-Datei, die im Markdown-Format vorliegen darf.

Der dependencies-Part der Deklaration setzt auf Semantic Versioning (SemVer) und erlaubt das Spezifizieren der benötigten Abhängigkeiten unter Einsatz des Caret- (^), Tilde- (~) und Wildcard-Zeichens (*). dabei gilt

  • ^1.2.3 erlaubt alle Versionen ab 1.2.3, die kleiner als 2.0.0 sind,
  • ~1.2.3 erlaubt die Versionen ab 1.2.3, die aber kleiner als 1.3.0 sein müssen und
  • 1.* erlaubt alle Versionen ab 1.0, aber kleiner als 2.0.

Darüber hinaus lassen sich benötigte Versionen auch über die Vergleichszeichen <, > und != sowie als exakte Version spezifizieren. Auch die Kombination von Voraussetzungen ist möglich, solange die sich per Komma getrennten Bedingungen nicht gegenseitig ausschließen.

Die Motivation hinter dem Projekt ist die aus Sicht des Betreibers zu umständliche Paket- und Dependency-Verwaltung in Python. Beides sei recht kompliziert und für Neueinsteiger schwer verständlich, und selbst für erfahrene Entwickler könne es durchaus mühsam sein, alle für ein Python-Projekt benötigten Dateien zu erstellen, heißt es im Readme des GitHub-Repository.

Als Vorbild für Poetry dienen demnach die Tools composer für PHP sowie cargo für Rust. Auch das Python-Tool pipenv werde den Ansprüchen nicht gerecht, da es zu umständlich sei und einige Schwächen habe.

Wer bereits mit Poetry 0.x gearbeitet hat, findet in Version 1.0 unter anderem eine Unterstützung für private Indizes. Außerdem dürfen Entwickler neuerdings Umgebungsvariablen im Konfigurationsmanagement verwenden. Lokale Konfigurationen lassen sich über das neu eingeführte Flag --local anlegen, und der add-Befehl bietet erweiterte Möglichkeiten zum Spezifizieren zusätzlicher Dependencys.

Die vollständige Liste der Neuerungen lässt sich dem Poetry-Blog entnehmen. Einen breiten Überblick über das Projekt und eine Beispieldatei für die Konfiguration finden sich neben der Installationsanleitung im GitHub-Repository. Der Code steht unter MIT-Lizenz. Zusätzliche Informationen und eine ausführliche Dokumentation bietet die Projektsite. (rme)