Ohne Virtual Environment teilen Sie Abhaengigkeiten zwischen Projekten — das fuehrt zu Versionskonflikten, nicht-deterministischen Builds und dem klassischen “works on my machine”-Problem. Projekt A benoetigt Django 4.2, Projekt B Django 5.0, und ohne Isolierung brechen sie sich gegenseitig. Ein Virtual Environment erstellt ein isoliertes Python mit eigenem Satz von Paketen fuer jedes Projekt.
venv — Eingebaut¶
python -m venv .venv
source .venv/bin/activate # Linux/Mac
.venv\Scripts\activate # Windows
pip install -r requirements.txt
deactivate
Das venv-Modul ist seit Python 3.3 Teil der Standardbibliothek. Es erstellt ein .venv-Verzeichnis mit einer Kopie des Python-Interpreters und einem leeren site-packages. Die Aktivierung setzt PATH so, dass python und pip auf die isolierte Umgebung zeigen. Jedes Projekt hat seine eigenen Bibliotheksversionen ohne Konflikte mit der globalen Installation.
uv — Moderne Alternative¶
# Installation
curl -LsSf https://astral.sh/uv/install.sh | sh
# Verwendung
uv venv
uv pip install flask
uv pip compile requirements.in -o requirements.txt
uv von Astral (den Ruff-Machern) ist in Rust geschrieben und bietet 10-100x schnellere Paketinstallation als pip. Es unterstuetzt ein pip-kompatibles Interface, Lock-Dateien und pip-kompatible Resolution. Fuer neue Projekte ist uv die empfohlene Wahl — es kombiniert Geschwindigkeit mit Kompatibilitaet. Poetry und PDM sind Alternativen fuer Projekte, die erweitertes Dependency Management mit eigenem Lock-Format benoetigen.
Best Practices¶
- .venv in .gitignore — die virtuelle Umgebung wird nie committed
- requirements.txt oder pyproject.toml — deklarative Abhaengigkeiten
- Lock-Datei (uv.lock, poetry.lock) — reproduzierbare Builds mit exakten Versionen
- Eine Umgebung pro Projekt — teilen Sie nie Umgebungen zwischen Projekten
- CI/CD — erstellen Sie in der Pipeline immer eine saubere Umgebung von Grund auf
Wichtigste Erkenntnis¶
Verwenden Sie immer ein Virtual Environment fuer jedes Python-Projekt. uv ist die schnellste Wahl fuer neue Projekte, Poetry oder PDM fuer komplexe Projekte mit vielen internen Abhaengigkeiten.