Python-Entwickler müssen sich endlich nicht mehr zwischen pip, poetry und pipenv entscheiden. uv, entwickelt vom Astral-Team hinter Ruff, verändert die Landschaft der Python-Paketverwaltung mit erstaunlicher Geschwindigkeit.
Was ist uv?
uv ist ein Python-Paket- und Projektverwaltungstool, geschrieben in Rust. Es hat nur ein Ziel: maximale Geschwindigkeit.
| Feature | Beschreibung |
|---|---|
| Paketinstallation | Kompatible Abhängigkeitsauflösung und Installation wie pip |
| Projektverwaltung | Ersetzt poetry/pipenv, verwaltet virtuelle Umgebungen und Abhängigkeiten |
| Caching-Mechanismus | Globaler Cache + Hardlinks, wiederholte Installationen in Sekunden |
| Mehrere Python-Versionen | Automatische Installation und Verwaltung mehrerer Python-Versionen |
| Zero-Config-Workflow | uv init + uv add und los geht's |
| Lizenz | MIT (vollständig Open Source) |
Das Astral-Team (auch die Autoren von Ruff) hat ihre gesamte Erfahrung mit High-Performance-Toolchains in Rust in uv investiert. Das Ergebnis: 10- bis 100-mal schneller als pip.
📦 GitHub: https://github.com/astral-sh/uv ⭐ Stars: 50k+ (Mitte 2026) 📄 License: MIT
uv installieren
uv lässt sich extrem einfach installieren — ein Befehl genügt:
# Empfohlener Weg — Installationsskript
curl -LsSf https://astral.sh/uv/install.sh | sh
Nach der Installation überprüfen:
uv --version
# uv 0.7.x
Wenn du Homebrew verwendest (macOS/Linux):
brew install uv
Oder mit pipx:
pipx install uv
Schnellstart: Dein erstes Projekt erstellen
Projekt initialisieren
# Neues Projekt erstellen (pyproject.toml + virtuelle Umgebung automatisch generiert)
uv init my-app
cd my-app
So sieht die generierte Dateistruktur aus:
my-app/
├── .python-version # Python-Version fixieren
├── pyproject.toml # Projektkonfiguration
├── README.md
├── main.py
└── uv.lock # Abhängigkeiten-Lock-Datei
Der Inhalt von pyproject.toml ist völlig übersichtlich:
[project]
name = "my-app"
version = "0.1.0"
description = "Add your description here"
requires-python = ">=3.12"
dependencies = []
Abhängigkeiten hinzufügen
# Produktionsabhängigkeiten hinzufügen (automatisch auflösen + installieren + locken)
uv add requests
uv add fastapi
uv add "pydantic>=2.0"
# Entwicklungsabhängigkeiten hinzufügen
uv add --dev pytest ruff mypy
Ein Befehl erledigt alles: Abhängigkeiten auflösen → herunterladen → installieren → uv.lock aktualisieren. Der ganze Vorgang dauert normalerweise nur wenige Sekunden.
Code ausführen
# Skript in der virtuellen Umgebung ausführen
uv run python main.py
# Installierte Tools ausführen
uv run pytest
uv run ruff check .
uv run aktiviert automatisch die virtuelle Umgebung des Projekts. Du musst nicht mehr manuell source .venv/bin/activate eingeben.
Erweiterte Features
Mehrere Python-Versionen verwalten
uv hat einen integrierten Python-Versionsmanager. Er kann mehrere Python-Versionen automatisch herunterladen und verwalten:
# Installierte Python-Versionen anzeigen
uv python list
# Bestimmte Python-Version installieren
uv python install 3.13
uv python install 3.11
# Python-Version für ein Projekt festlegen
uv python pin 3.13
# Unter einer bestimmten Version ausführen
uv run --python 3.11 python main.py
Das löst ein langjähriges Problem von Python-Entwicklern — pyenv ist nicht mehr nötig.
Workspace (Arbeitsbereich)
Wenn dein Projekt mehrere Pakete hat, ist uvs Workspace-Funktion perfekt dafür:
# Workspace initialisieren
uv init --package packages/core
uv init --package packages/cli
pyproject.toml:
[tool.uv.workspace]
members = ["packages/*"]
Skript-Verwaltung
uv unterstützt die Definition von Skript-Aliasen in pyproject.toml:
[tool.uv.scripts]
dev = "uvicorn main:app --reload"
test = "pytest tests/"
lint = "ruff check . && mypy src/"
Dann einfach ausführen:
uv run dev
uv run test
CI/CD-Integration
So verwendest du uv in GitHub Actions:
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v5
with:
enable-cache: true
- name: Set up Python
run: uv python install
- name: Install dependencies
run: uv sync --frozen
- name: Run tests
run: uv run pytest
enable-cache: true cached die uv-Paketdownloads. Der CI-Geschwindigkeitsgewinn ist enorm.
Geschwindigkeitsvergleich mit pip/poetry
Hier die offiziellen Benchmark-Daten von Astral (Django mit allen Abhängigkeiten installieren):
| Tool | Erstinstallation | Cache-Installation |
|---|---|---|
| pip | ~15s | ~3s |
| poetry | ~20s | ~5s |
| uv | ~1,5s | ~0,3s |
Warum ist uv so schnell?
- Rust-Implementierung — Die Abhängigkeitsauflösungs-Engine ist in Rust geschrieben, um Größenordnungen schneller als Python
- Globaler Cache — Pakete werden nach dem Download global zwischengespeichert. Projekte teilen sie über Hardlinks
- Paralleles Herunterladen — Mehrere Pakete werden gleichzeitig heruntergeladen, die gesamte Netzwerkbandbreite wird ausgenutzt
- Intelligentes Caching — Auflösungsergebnisse werden ebenfalls zwischengespeichert, doppelte Berechnungen werden vermieden
Von pip/poetry migrieren
Von pip migrieren
# Projekt mit bestehender requirements.txt erstellen
uv pip install -r requirements.txt
# Oder nach dem Erstellen eines neuen Projekts importieren
uv init
uv add -r requirements.txt
Von poetry migrieren
# Abhängigkeiten direkt aus pyproject.toml synchronisieren
uv sync
# Falls Neulocken nötig ist
uv lock
uv ist vollständig kompatibel mit dem pyproject.toml-Format. Die meisten poetry-Projekte können direkt umgestellt werden.
Praktische Befehls-Referenz
# Projektverwaltung
uv init <name> # Neues Projekt erstellen
uv add <package> # Abhängigkeit hinzufügen
uv remove <package> # Abhängigkeit entfernen
uv sync # Abhängigkeiten synchronisieren (wie pip install -e .)
uv lock # Abhängigkeiten neu locken
# Ausführen
uv run <command> # Befehl in der virtuellen Umgebung ausführen
uv tool run <tool> # Temporäres Tool ausführen (wie pipx run)
uv tool install <tool> # Globales Tool installieren
# Python-Verwaltung
uv python install <ver> # Python-Version installieren
uv python list # Installierte Versionen auflisten
uv python pin <ver> # Python-Version des Projekts fixieren
# Cache
uv cache dir # Cache-Verzeichnis anzeigen
uv cache clean # Cache leeren
Fazit
uv wird gerade zum neuen Standard-Tool für Python-Entwickler. Es kommt vom Ruff-Team, ist extrem schnell, das API-Design ist klar und übersichtlich, und es ist vollständig Open Source.
Empfohlene Einsatzszenarien:
- ✅ Neue Projekte — starte direkt mit
uv init - ✅ CI/CD — Cache-freundlich, Build-Zeiten deutlich reduziert
- ✅ Projekte mit mehreren Python-Versionen — integrierte Versionsverwaltung
- ✅ Migration von poetry/pipenv — kompatibel mit pyproject.toml
Wenn du noch pip + venv oder poetry verwendest, probier uv unbedingt aus. Sobald du die blitzschnelle Installation erlebt hast, willst du nicht mehr zurück.
🔗 Offizielle Dokumentation: https://docs.astral.sh/uv/ 🔗 GitHub: https://github.com/astral-sh/uv