Files
mkdocs-wiki/docs/macos/python.md
T
rewa81 c0706a6d26
Build and Push MkDocs Site / build-and-push (push) Has been cancelled
Add uv support: pyproject.toml, update docs, upgrade mkdocs-material to 9.7.0
2025-11-23 15:14:43 +01:00

224 lines
4.6 KiB
Markdown

# Python Setup mit uv auf macOS
## Was ist uv?
[uv](https://docs.astral.sh/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)
```sh
brew install uv
```
### Mit Shell-Script
```sh
curl -LsSf https://astral.sh/uv/install.sh | sh
```
### Mit pip
```sh
pip install uv
```
Nach der Installation solltest du das Terminal neu starten oder den Pfad aktualisieren:
```sh
source ~/.zshrc
```
Überprüfe die Installation:
```sh
uv --version
```
## Arbeiten mit uv in Projekten
### Neues Projekt initialisieren
```sh
# 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:
```sh
# 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:
```gitignore
.venv/
```
### Pakete verwalten
```sh
# 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
```sh
# 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
```sh
# 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
```sh
# 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:
```sh
# 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
```sh
# 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
```sh
# Spezifische Python-Version verwenden
uv venv --python 3.11
uv venv --python 3.12
```
### Projekt-Dependencies exportieren
```sh
# Für Kompatibilität requirements.txt erstellen
uv pip freeze > requirements.txt
```
### Cache leeren
```sh
uv cache clean
```
## Weiterführende Ressourcen
- [uv Dokumentation](https://docs.astral.sh/uv/)
- [uv GitHub Repository](https://github.com/astral-sh/uv)
- [Migration Guide von pip zu uv](https://docs.astral.sh/uv/pip/)