Aktualisierte Projekte

Es war mal wieder an der Zeit, Aktualisierungen vorzunehmen. Diesmal habe ich ein Tutorial (PDF-Version) und ein Shellskript auf den aktuellen Stand gebracht.

Einrichtung einer virtuellen Entwicklungsumgebung

Da wäre zunächst die Anleitung zum Erstellen einer virtuellen Umgebung für ein Python-Projekt. Den Blogbeitrag zu diesem Thema hatte ich bereits 2019 veröffentlicht. Einige Zeit später folgte das Skript als PDF-Dokument zum Herunterladen. Es wurde seitdem immer wieder auf den neusten Stand gebracht. Nun ist es in Version 2.0 erschienen.

Die dort beschrieben Vorgehensweise ist nach wie vor gebräuchlich, aber es sei darauf hingewiesen, dass seit dem Erscheinen des Paketmanagers uv ein anderer Weg vorhanden ist, der sich immer größerer Beliebtheit erfreut. Denn mit uv können Pakete verwaltet werden und dieses Programm richtet ebenfalls eine virtuelle Umgebung ein. Weitere Informationen findet ihr in diesem Blogbeitrag.

createPythonProject.sh

Das Erstellen eines neuen Python-Projekts kann Kopfzerbrechen bereiten. Dann stellt sich die Frage nach der „richtigen“ Projektstruktur oder etwaigen Konfigurationsdateien. Zur Projektstruktur hatte ich im Dezember 2021 einen Artikel veröffentlicht. Im gleichen Monat kam ein Shellskript dazu, mit dem ein neues Projekt erzeugt werden kann. Dieses Skript wurde nun aktualisiert. Während in früheren Versionen von diesem Skript die Konfigurationsdateien setup.cfg und pyproject.toml erstellt wurden, orientiert sich die neue Version 2.1 an PEP 621. Darin wird vorgeschlagen, die wesentlichen Metadaten in der Datei pyproject.toml zu speichern. Zumindest für neue Projekte ist die Datei daher setup.cfg nicht mehr erforderlich. Dementsprechend erzeugt das Skript jetzt nur noch die Datei pyproject.toml. Der Editable-Install-Modus wird ebenfalls von pyproject.toml unterstützt. Es kann also weiterhin folgender Befehl genutzt werden:

pip3 install -e .

Dadurch suchtpip (bzw. pip3) in der Datei pyproject.toml nach einem [build-system]-Eintrag, der zum Beispiel wie folgt aussehen könnte:

[build-system]
requires = ["setuptools>=70.0"]
build-backend = "setuptools.build_meta"

Als Build-Backend wird in diesem Fall setuptools genutzt, das den editable mode -e kennt und daher das Projekt installieren kann. Falls ihr ein anderes Build-Backend verwenden möchtet (z.B. hatchling oder uv-build), hilft euch dieser Artikel weiter.

Die Datei pyproject.toml kann auch dafür verwendet werden, etwaige Abhängigkeiten zu verwalten. Wenn davon Gebrauch gemacht wird, ist die Datei requirements.txt nicht mehr erforderlich. In der vom Skript erstellten Datei pyproject.toml ist für Abhängigkeiten lediglich ein Platzhalter vorhanden (dependencies = []). Es wird weiterhin die Datei requirements.txt erstellt. In einer zukünftigen Version werde ich dies vielleicht ändern.