Zum Inhalt

Python Setup mit uv auf macOS

Was ist uv?

uv ist ein extrem schneller Python Package Manager und Project Manager, geschrieben in Rust. Er ersetzt pip, venv, virtualenv und weitere Tools durch eine einzige, performante Lösung.

Vorteile:

  • ⚡ 10-100x schneller als pip
  • 🔒 Automatisches Dependency Management mit Lock-Files
  • 🎯 Integriertes Virtual Environment Management
  • 🚀 Einfache Installation und Verwendung

Installation von uv

Mit Homebrew (empfohlen)

1
brew install uv

Mit Shell-Script

1
curl -LsSf https://astral.sh/uv/install.sh | sh

Mit pip

1
pip install uv

Nach der Installation solltest du das Terminal neu starten oder den Pfad aktualisieren:

1
source ~/.zshrc

Überprüfe die Installation:

1
uv --version

Arbeiten mit uv in Projekten

Neues Projekt initialisieren

1
2
3
# Projekt mit pyproject.toml erstellen
uv init my-project
cd my-project

Bestehendes Projekt einrichten

Wenn ein Projekt bereits pyproject.toml oder requirements.txt hat:

1
2
3
4
5
6
7
8
# Wechsle ins Projekt-Verzeichnis
cd /path/to/project

# Dependencies installieren (erstellt automatisch .venv)
uv sync

# Oder mit requirements.txt
uv pip install -r requirements.txt

Wichtig: Der .venv Ordner sollte in .gitignore eingetragen sein:

1
.venv/

Pakete verwalten

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# Paket hinzufügen
uv add requests

# Paket mit spezifischer Version hinzufügen
uv add "mkdocs-material==9.7.0"

# Development-Paket hinzufügen
uv add --dev pytest

# Paket entfernen
uv remove requests

# Alle Dependencies installieren
uv sync

# Dependencies aktualisieren
uv sync --upgrade

Dependencies prüfen und aktualisieren

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# Veraltete Pakete anzeigen
uv tree --outdated

# Zeigt alle Dependencies mit verfügbaren Updates:
# package v1.0.0 (latest: v1.2.0)

# Alle Pakete auf neueste Version aktualisieren
uv lock --upgrade

# Nur ein bestimmtes Paket aktualisieren
uv lock --upgrade-package mkdocs-material

# Mehrere spezifische Pakete aktualisieren
uv lock --upgrade-package mkdocs-material --upgrade-package requests

# Nach dem Lock: Änderungen installieren
uv sync

Workflow für Updates:

  1. Veraltete Pakete identifizieren: uv tree --outdated
  2. Lock-File aktualisieren: uv lock --upgrade (alle) oder uv lock --upgrade-package <paket> (spezifisch)
  3. Änderungen installieren: uv sync
  4. Testen: Sicherstellen, dass alles funktioniert
  5. Committen: Lock-File und ggf. pyproject.toml committen

Dependency Tree anzeigen

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Vollständiger Dependency-Baum
uv tree

# Nur bestimmte Tiefe anzeigen
uv tree --depth 2

# Reverse Dependencies (wer braucht dieses Paket?)
uv tree --invert requests

# Mit Paketgrößen
uv tree --show-sizes

Python-Skripte ausführen

1
2
3
4
5
6
# Skript im Virtual Environment ausführen
uv run python script.py

# Oder direkt ein Tool ausführen
uv run mkdocs serve
uv run pytest

Virtual Environment manuell aktivieren

Falls du das Virtual Environment direkt aktivieren möchtest:

1
2
3
4
5
# uv erstellt das Environment automatisch bei Bedarf
source .venv/bin/activate

# Deaktivieren
deactivate

Unterschiede zu klassischem venv/pip

Aspekt Klassisch (venv/pip) Modern (uv)
Environment erstellen python3 -m venv .venv Automatisch bei uv sync
Environment aktivieren source .venv/bin/activate Nicht nötig mit uv run
Pakete installieren pip install -r requirements.txt uv sync oder uv pip install -r requirements.txt
Paket hinzufügen pip install package + manuell zu requirements.txt uv add package
Lock-File Manuell mit pip-tools Automatisch (uv.lock)
Geschwindigkeit Standard 10-100x schneller

Praktisches Beispiel: MkDocs Projekt

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# Projekt klonen
git clone https://gitea.rwcloud.ch/rewa81/mkdocs-wiki.git
cd mkdocs-wiki

# Dependencies installieren (erstellt .venv automatisch)
uv sync

# MkDocs Server starten
uv run mkdocs serve

# HTML-Seiten erstellen
uv run mkdocs build

Häufige Aufgaben

Python-Version wechseln

1
2
3
# Spezifische Python-Version verwenden
uv venv --python 3.11
uv venv --python 3.12

Projekt-Dependencies exportieren

1
2
# Für Kompatibilität requirements.txt erstellen
uv pip freeze > requirements.txt

Cache leeren

1
uv cache clean

Weiterführende Ressourcen