Eigenständige ausführbare Python-Skripte mit `uv` erstellen
(blog.dusktreader.dev)- So lassen sich mit
uveigenständige Python-Skripte erstellen, die sofort ohne separate Installation von Abhängigkeiten ausgeführt werden können - Ein praxisnaher Ansatz, der aus einer Situation entstand, in der in einem Go-Projekt Python-Skripte für API-Tests verwendet wurden
Grenzen des bisherigen Ansatzes
- Um Python-Skripte auszuführen, die Pakete wie
httpx,IPythonoderloguruverwenden, musste man bislang eines der folgenden Vorgehen wählen- Pakete direkt im System-Python installieren
- Eine virtuelle Umgebung erstellen, Pakete installieren und das Skript danach ausführen
- Beide Methoden sind umständlich, können sich auf die Systemumgebung auswirken und erfordern beim Teilen mit anderen oft längere Erklärungen
Python-Skripte mit uv bequem ausführen
uvist ein Python-Paketmanager und ein Ersatz für pip, mit dem sich Python-Skripte in einer isolierten Ausführungsumgebung starten lassen- Über den Kommentar
# /// scriptkönnen Abhängigkeitsinformationen direkt im Skript angegeben werden# /// script # dependencies = ["ipython", "httpx", "loguru"] # /// - Ein Skript mit dieser Konfiguration kann mit folgendem Befehl ausgeführt werden:
uv run jam_users.py uverstellt automatisch eine temporäre virtuelle Umgebung, installiert die benötigten Pakete und führt anschließend das Skript aus
In ein ausführbares Skript verwandeln
- Wie ein normales Python-Skript kann man es zwar mit
#!/usr/bin/env pythonausführbar machen, aber auf diese Weise werden dieuv-script-Kommentare nicht erkannt - Stattdessen lässt sich das Problem lösen, indem der
uv-Befehl direkt in den Shebang eingetragen wird#!/usr/bin/env -S uv run --script # /// script # dependencies = ["ipython", "httpx", "loguru"] # /// - Auf diese Weise kann das Skript nach
chmod +xdirekt ausgeführt werden und funktioniert auf anderen Unix-Systemen ebenfalls unverändert, solange dortuvvorhanden ist:./jam_users.py
Vorteile und Einsatzmöglichkeiten
- Der
uv-Ansatz ist sehr nützlich, wenn man Skripte an andere weitergeben möchte - Ohne komplizierte Vorbereitung werden die benötigten Pakete und die Umgebung automatisch eingerichtet
- Weder das System-Python noch die globale Umgebung werden verschmutzt
- Ein einziges Skript reicht aus, um sowohl die Ausführung als auch das Abhängigkeitsmanagement abzudecken
Der Autor berichtet, dass das Weitergeben von Python-Skripten früher wegen aufwendiger Installationsanweisungen umständlich war, dieses Problem sich mit
uvnun aber einfach lösen lässt
- Das eignet sich nicht nur für kleine Testskripte, sondern auch für Automatisierungsskripte im produktiven Einsatz
Noch keine Kommentare.