Erste Schritte mit uv

Die Paketverwaltung unter Python kann ein ziemliches Durcheinander sein, was einer der Kritikpunkte war, die ich in der Vergangenheit an Python hatte. Es ist nicht ungewöhnlich, dass verschiedene Programme nicht nur unterschiedliche Pakete, sondern sogar völlig unterschiedliche Python-Versionen benötigen. Python selbst bietet virtuelle Umgebungen, die unterschiedliche Paketbäume für verschiedene Programme ermöglichen, aber das reicht möglicherweise nicht aus. Conda ist eine Alternative, die für verschiedene Umgebungen unterschiedliche Python-Versionen installieren kann und für viele Machine-Learning-Anwendungen der De-facto-Standard ist, aber es ist nicht perfekt. Ich sehe es oft zusammen mit pip statt mit dem eigenen Paketmanager von conda im Einsatz, was einen Teil des Nutzens von conda zunichtemacht, aber der conda-Paketmanager kann extrem langsam sein.

In jüngerer Zeit ist uv als Alternative auf der Bildfläche erschienen. Es ist in Rust geschrieben und nutzt, wo möglich, einen gemeinsamen Paket-Cache statt separater Caches für jede Umgebung. Da das System-Python unter macOS für die tatsächliche Entwicklung nicht empfohlen wird, habe ich beschlossen, hier uv auszuprobieren.

Installation

Die Installation ist unter allen gängigen Betriebssystemen unkompliziert und hier erklärt. Ich habe den Standalone-Installer verwendet. Sie können es auch mit Homebrew unter macOS oder Winget unter Windows installieren, und es gibt sogar die Möglichkeit, ein Docker-Image zu verwenden.

Anschließend müssen Sie eine Python-Version installieren, was mit uv python install. erledigt wird. Es ist möglich, spezifische Python-Versionen zu installieren:

uv python install 3.14

Skripte ausführen

Python-Skripte werden mit uv run: ausgeführt:

uv run scriptname.py

Arbeiten mit Projekten

Die wichtigste Art, uv zu verwenden, ist die Arbeit in Projekten. Das ist der Funktionsweise von Rust recht ähnlich – nicht überraschend, da uv in Rust geschrieben ist.

Ein neues Projekt wird mit uv init erstellt. Sie können es entweder mit einem Namen als Argument aufrufen, wodurch ein neues Verzeichnis angelegt wird, oder innerhalb eines leeren Verzeichnisses. In beiden Fällen wird ein Projektgerüst erstellt, einschließlich eines Git-Repositorys und einer Datei main.py. Außerdem gibt es eine Datei pyproject.toml , die Metadaten und Abhängigkeiten enthält, genau wie eine Datei cargo.toml in einem Rust-Projekt.

Pakete werden dann mit uv add packagename hinzugefügt. Sie werden in die Datei pyproject.toml eingetragen und installiert. In einem Machine-Learning-Projekt mit torch würden Sie die Abhängigkeiten so installieren:

uv add torch torchvision

Jedes Projektverzeichnis ist eine eigenständige virtuelle Umgebung. Es ist also nicht mehr nötig, Umgebungen manuell zu aktivieren – Sie wechseln einfach in ein Verzeichnis und lassen uv run den Rest erledigen.

Sie können sogar uv build verwenden, um Quell- und Binärpakete Ihres Projekts zu erstellen, was die Verteilung recht einfach macht.

Fazit

Anfangs war ich zögerlich, da ich so an den normalen pip-Workflow gewöhnt war und unter Linux conda zur Verwaltung virtueller Umgebungen nutzte. Aber da ich ein großer Fan von cargo bin, war es naheliegend, uv auszuprobieren. Mir gefällt sehr, dass Projekte gleichbedeutend mit virtuellen Umgebungen sind und diese automatisch aktiviert werden.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert