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

2.2 KiB
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):

uv pip install requests

Auch mit requirements.txt:

uv pip install -r requirements.txt

2. Virtuelle Umgebungen verwalten

# Neue venv erstellen
uv venv .venv

# venv aktivieren (z. B. in bash)
source .venv/bin/activate

3. Python-Versionen verwalten

Ähnlich wie pyenv:

# 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:

# 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:

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.