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:
pyenvzum Installieren einer Python-Versionvenvodervirtualenvzur Erstellung von Umgebungenpipzur Paketinstallationpip-toolsoderpoetryzum Locken von Abhängigkeitenpipxfü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.