5 Punkte von GN⁺ 2025-03-31 | Noch keine Kommentare. | Auf WhatsApp teilen
  • So lassen sich mit uv eigenstä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, IPython oder loguru verwenden, 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

  • uv ist ein Python-Paketmanager und ein Ersatz für pip, mit dem sich Python-Skripte in einer isolierten Ausführungsumgebung starten lassen
  • Über den Kommentar # /// script kö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  
    
  • uv erstellt 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 python ausführbar machen, aber auf diese Weise werden die uv-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 +x direkt ausgeführt werden und funktioniert auf anderen Unix-Systemen ebenfalls unverändert, solange dort uv vorhanden 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 uv nun 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.

Noch keine Kommentare.