Python Virtual Environment Venv
Python Virtual Environments: venv richtig nutzen
Virtuelle Umgebungen sind essentiell für Python-Entwicklung. Sie isolieren Projektabhängigkeiten und verhindern Konflikte zwischen verschiedenen Python-Projekten.
Warum Virtual Environments?
- Isolation: Jedes Projekt hat eigene Pakete
- Versionskonflikte vermeiden: Projekt A braucht Django 3, Projekt B Django 4
- Sauberes System: Globale Python-Installation bleibt unverändert
- Reproduzierbarkeit: Exakte Versionen für Deployment
venv erstellen und aktivieren
Virtuelle Umgebung erstellen
# In Projektverzeichnis wechseln cd mein-projekt # venv erstellen python3 -m venv venv # Alternative Namen python3 -m venv .venv python3 -m venv env
Aktivieren
# Linux/macOS source venv/bin/activate # Windows (PowerShell) .\venv\Scripts\Activate.ps1 # Windows (CMD) venv\Scripts\activate.bat
Nach Aktivierung zeigt der Prompt (venv) an:
(venv) user@host:~/projekt$
Deaktivieren
deactivate
Pakete verwalten
Pakete installieren
# Einzelnes Paket pip install requests # Bestimmte Version pip install django==4.2 # Mehrere Pakete pip install flask sqlalchemy pytest
requirements.txt erstellen
# Alle installierten Pakete exportieren pip freeze > requirements.txt # Inhalt anzeigen cat requirements.txt
Beispiel requirements.txt:
Django==4.2.7 requests==2.31.0 python-dotenv==1.0.0 Pillow==10.1.0
Aus requirements.txt installieren
pip install -r requirements.txt
Projektstruktur
mein-projekt/ ├── venv/ # Virtuelle Umgebung (nicht committen!) ├── src/ │ └── app.py ├── tests/ ├── requirements.txt # Abhängigkeiten ├── requirements-dev.txt # Entwicklungs-Abhängigkeiten ├── .gitignore └── README.md
.gitignore für Python
# Virtual Environment venv/ .venv/ env/ # Python __pycache__/ *.py[cod] *.egg-info/ dist/ build/ # IDE .idea/ .vscode/ *.swp # Environment .env
Entwicklungs- vs. Produktions-Abhängigkeiten
requirements-dev.txt
-r requirements.txt # Basis-Abhängigkeiten inkludieren pytest==7.4.3 black==23.11.0 flake8==6.1.0 mypy==1.7.0
# Für Entwicklung pip install -r requirements-dev.txt # Für Produktion pip install -r requirements.txt
Alternative: pip-tools
Für bessere Abhängigkeitsverwaltung:
pip install pip-tools # requirements.in (nur direkte Abhängigkeiten) echo "django" > requirements.in echo "requests" >> requirements.in # requirements.txt generieren (mit allen Unterabhängigkeiten) pip-compile requirements.in # Installieren und synchronisieren pip-sync requirements.txt
pyenv für Python-Versionen
Verschiedene Python-Versionen parallel nutzen:
# pyenv installieren (Linux/macOS) curl https://pyenv.run | bash # Python-Version installieren pyenv install 3.12.0 pyenv install 3.11.6 # Global setzen pyenv global 3.12.0 # Pro Projekt setzen cd mein-projekt pyenv local 3.11.6
Häufige Probleme
- venv-Ordner ins Git committen
- Pakete global statt im venv installieren
- venv nicht aktivieren vor pip install
- Falsche Python-Version im venv
Prüfen ob venv aktiv ist
# Welches Python? which python # Sollte zeigen: /pfad/zum/projekt/venv/bin/python # Welches pip? which pip # Sollte zeigen: /pfad/zum/projekt/venv/bin/pip
VS Code Integration
- Projekt öffnen
Ctrl+Shift+P→ "Python: Select Interpreter"- venv auswählen
VS Code aktiviert das venv automatisch im integrierten Terminal.