Files
work/notes/nextcloud/Notes/IT-Know-How/python/uv.md
T

94 lines
2.2 KiB
Markdown
Executable File

`uv` ist ein neues, sehr schnelles All-in-one-Tool für das Python-Ökosystem, entwickelt von Astral (den Machern von `ruff`).
Es ist im Kern ein **extrem schneller Paket- und Environment-Manager**, der mehrere bekannte Tools ersetzt bzw. bündelt:
- `pip` / `pip-tools` (Installation & Lockfiles)
- `virtualenv` / `venv` (virtuelle Umgebungen)
- `pyenv` (verschiedene Python-Versionen verwalten)
- Teile von `poetry` / `pipx` (Projekt- & Tool-Management)
`pip install uv` installiert dabei nur einen Bootstrapper, der das eigentliche `uv`-Binary nachlädt.
---
## Wofür ist `uv` gut?
### 1. Pakete extrem schnell installieren
`uv` ist in Rust geschrieben und deutlich schneller als `pip` oder `pip-tools` beim Auflösen und Installieren von Abhängigkeiten.
Beispiel (Drop-in für pip):
```bash
uv pip install requests
```
Auch mit `requirements.txt`:
```bash
uv pip install -r requirements.txt
```
---
### 2. Virtuelle Umgebungen verwalten
```bash
# Neue venv erstellen
uv venv .venv
# venv aktivieren (z. B. in bash)
source .venv/bin/activate
```
---
### 3. Python-Versionen verwalten
Ähnlich wie `pyenv`:
```bash
# Bestimmte Python-Version installieren
uv python install 3.12
# Projekt mit bestimmter Version starten
uv run --python 3.12 main.py
```
---
### 4. Projekte initialisieren & reproduzierbare Builds
`uv` unterstützt `pyproject.toml` und Lockfiles (`uv.lock`) für reproduzierbare Umgebungen:
```bash
# Neues Projekt anlegen
uv init my-project
cd my-project
uv sync # Installiert Abhängigkeiten gemäß pyproject + uv.lock
```
---
### 5. Skripte/Tools direkt ausführen
Ähnlich wie `pipx`:
```bash
uv run black .
uv run pytest
```
`uv` kümmert sich im Hintergrund um die passende Umgebung und Abhängigkeiten.
---
## Kurzfassung
`uv` ist sinnvoll, wenn du:
- Python-Pakete **deutlich schneller** installieren willst,
- **alles rund um Python-Umgebungen** (Packages, venvs, Python-Versionen, Tools) mit **einem** konsistenten Tool verwalten möchtest,
- reproduzierbare Builds mit `pyproject.toml` und Lockfile brauchst,
- eine moderne Alternative zu `pip`, `virtualenv`, `pyenv`, `pip-tools`, teilweise `poetry`/`pipx` suchst.
Wenn du aktuell `pip`, `virtualenv` & Co nutzt, kannst du mittelfristig sehr viel davon durch `uv` ersetzen.