94 lines
2.2 KiB
Markdown
Executable File
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. |