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)
Mit Shell-Script
| curl -LsSf https://astral.sh/uv/install.sh | sh
|
Mit pip
Nach der Installation solltest du das Terminal neu starten oder den Pfad aktualisieren:
Überprüfe die Installation:
Arbeiten mit uv in Projekten
Neues Projekt initialisieren
| # 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:
| # 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:
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:
- Veraltete Pakete identifizieren:
uv tree --outdated
- Lock-File aktualisieren:
uv lock --upgrade (alle) oder uv lock --upgrade-package <paket> (spezifisch)
- Änderungen installieren:
uv sync
- Testen: Sicherstellen, dass alles funktioniert
- Committen: Lock-File und ggf.
pyproject.toml committen
Dependency Tree anzeigen
| # 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
| # 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:
| # 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
| # Spezifische Python-Version verwenden
uv venv --python 3.11
uv venv --python 3.12
|
Projekt-Dependencies exportieren
| # Für Kompatibilität requirements.txt erstellen
uv pip freeze > requirements.txt
|
Cache leeren
Weiterführende Ressourcen