
Inhaltsverzeichnis
Python ist beliebt, aber das Packaging-Ökosystem hat über Jahre hinweg für Frust gesorgt: pip
, venv
, virtualenv
, pipx
, pyenv
– das Zusammenspiel dieser Tools ist oft wenig intuitiv. Hier kommt uv ins Spiel: ein in Rust geschriebener, blitzschneller Package Manager, der viele dieser Tools in einem einzigen Werkzeug vereint. Entwickelt von Astral, will uv das Paketmanagement von Grund auf modernisieren.
Was ist uv?
uv
ist ein All-in-One-Tool für das Python-Umfeld. Es kombiniert:
- Paketinstallation (als Drop-in-Ersatz für
pip
) - Erstellung und Verwaltung von virtuellen Umgebungen (wie
venv
) - Unterstützung für Python-Versionen und automatische Installation (vergleichbar mit
pyenv
) - Workspaces für monorepo-ähnliche Projekte
Das Ganze ist in Rust geschrieben und dadurch extrem performant.
Die Probleme klassischer Tools
Ein klassisches Setup könnte so aussehen:
pyenv
zum Installieren einer Python-Versionvenv
odervirtualenv
zur Erstellung von Umgebungenpip
zur Paketinstallationpip-tools
oderpoetry
zum Locken von Abhängigkeitenpipx
für isolierte CLI-Tools
Dieses Ökosystem ist mächtig, aber fragmentiert. uv
bündelt all das in einem einzigen Tool. Das bedeutet:
- Weniger Komplexität
- Schnellere Installationen
- Einfachere Konfiguration
Installation
Die Installation ist denkbar einfach:
MacOS und Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Alternativ:
pip install uv
Performance: Rust macht den Unterschied
Der Einsatz von Rust als Implementierungssprache sorgt dafür, dass uv
deutlich schneller ist als pip
. Installationen, Auflösungen von Abhängigkeiten und Erstellung von virtuellen Umgebungen laufen spürbar flotter ab. Benchmarks zeigen eine bis zu 10-fache Geschwindigkeit im Vergleich zu klassischen Python-Tools.
Zudem nutzt uv
aggressive Caching-Strategien und parallele Downloads, um den Installationsprozess weiter zu beschleunigen.
All-in-One: Mehr als nur pip
uv
geht weit über die Fähigkeiten von pip
hinaus:
1. Paketmanagement mit Lockfiles
Ähnlich wie poetry
oder pip-tools
bietet uv
Unterstützung für Lockfiles, um reproduzierbare Builds zu garantieren.
2. Virtuelle Umgebungen
Virtuelle Umgebungen werden direkt im .venv
-Verzeichnis erstellt und verwaltet. Kein python -m venv
oder virtualenv
mehr nötig.
3. Python-Installation
Falls eine benötigte Python-Version nicht vorhanden ist, kann uv
diese automatisch installieren – ähnlich wie pyenv
, aber integriert.
4. CLI-Tools isolieren (pipx-Ersatz)
CLI-Tools lassen sich mit uv
ebenfalls isoliert installieren und nutzen, ohne das System zu "verschmutzen".
Beispiel: Installation und Nutzung von ruff
, einem beliebten Linter für Python:
uv venv --name tools
uv add ruff
# oder als Pip-Ersatz (ohne .lock Datei)
# uv pip install ruff
.venv/bin/ruff check src/
Alternativ kann man ruff
in einem dedizierten Workspace oder via Projektkonfiguration integrieren und über uv run
aufrufen:
uv run ruff check src/
So lassen sich Tools systemunabhängig und reproduzierbar installieren und verwenden – ganz ohne globale Abhängigkeiten.
Die Hilfe gibt den Funktionsumfang von uv ganz gut wieder:
An extremely fast Python package manager.
Usage: uv [OPTIONS] <COMMAND>
Commands:
run Run a command or script
init Create a new project
add Add dependencies to the project
remove Remove dependencies from the project
sync Update the project's environment
lock Update the project's lockfile
export Export the project's lockfile to an alternate format
tree Display the project's dependency tree
tool Run and install commands provided by Python packages
python Manage Python versions and installations
pip Manage Python packages with a pip-compatible interface
venv Create a virtual environment
build Build Python packages into source distributions and wheels
publish Upload distributions to an index
cache Manage uv's cache
self Manage the uv executable
version Display uv's version
help Display documentation for a command
Workspace-Support
uv
unterstützt sogenannte Workspaces, ähnlich wie man es von yarn
oder pnpm
in der JavaScript-Welt kennt. Damit lassen sich mehrere Subprojekte mit eigenen Abhängigkeiten, aber gemeinsamer Konfiguration verwalten – ideal für monolithische Repositories oder Microservices.
Ein typisches Setup:
[workspace]
members = ["core", "api", "cli"]
Workspaces vereinfachen das Dependency-Management und fördern konsistente Umgebungen innerhalb großer Projekte.
Beispiele aus der Praxis
Einfaches Projekt aufsetzen
uv venv
uv add requests
# oder als Pip-Ersatz (ohne .lock Datei)
# uv pip install requests
uv run script.py
Neues Projekt mit Workspace erstellen
uv init --workspace
Das erzeugt eine Grundstruktur mit uv.toml
und .venv
, bereit zur Erweiterung.
Fazit
uv
ist ein echter Game-Changer für das Python-Ökosystem. Durch die Kombination aus hoher Performance, klarer Benutzerführung und umfassender Funktionalität bietet es eine moderne Alternative zu den etablierten, oft fragmentierten Tools. Für Entwickler und DevOps, die regelmäßig mit Python arbeiten, lohnt sich ein Blick auf uv
– vielleicht ist es das Tool, auf das wir alle gewartet haben.