venv Aktivierung in Visual Studio Code (Windows, PowerShell)
Warum venv\Scripts\Activate.ps1 wichtig ist, was im Hintergrund passiert, und wie du sauber mit HTTPie und Django arbeitest – im VS Code Dark Stil.
Warum venv überhaupt?
- Isolation: Pakete und Abhängigkeiten bleiben projektlokal, keine Konflikte mit anderen Projekten.
- Reproduzierbarkeit: Gleiche Umgebung für Team, CI/CD und Deployment.
- Sauberes System: Globales Python bleibt unverändert; pip install wirkt nur im venv.
Was macht Activate.ps1 im Hintergrund?
- PATH setzt auf venv: python und pip zeigen auf venv\Scripts\python.exe und venv\Scripts\pip.exe.
- Prompt-Markierung: Dein Terminal zeigt (venv), damit klar ist: du bist in der virtuellen Umgebung.
- Umgebungsvariablen: PowerShell passt Variablen wie $env:PATH an, ohne globalen Zustand zu verändern.
- Shell-spezifisch: Unter cmd verwendest du activate.bat, unter Linux/macOS source venv/bin/activate.
Workflow in Visual Studio Code
- Terminal öffnen: Ansicht → Terminal (oder Ctrl + ö).
- venv aktivieren: Im Projektordner:
PowerShell
.\venv\Scripts\Activate.ps1 - Pakete installieren:
HTTPie im venv
pip install httpie - Django starten:
Runserver
python manage.py runserver - API testen mit HTTPie:
HTTPie GET
http GET http://127.0.0.1:8000/api/movies/
Vergleich: aktiviert vs. nicht aktiviert
Welche Python-Exe wird verwendet?
where python
Erwartung: Mit aktivierter Umgebung zeigt der erste Treffer in venv\Scripts\python.exe, ohne Aktivierung zeigt er auf deine globale Installation.
Installierte Pakete prüfen
pip list
Erwartung: Aktivierte Umgebung: nur projektlokale Pakete. Ohne Aktivierung: globale Systempakete.
Typische Stolpersteine (Windows, PowerShell)
Execution Policy blockiert Skripte: Wenn „running scripts is disabled“ erscheint, nutze eine Prozess-lokale Ausnahme:
Nur für diese Session
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Danach erneut: .\venv\Scripts\Activate.ps1.
VS Code Python-Interpreter wählen: Unten rechts auf den Interpreter klicken und den Pfad aus venv wählen, damit Linting/IntelliSense korrekt sind.
Schnellreferenz: HTTPie für CRUD
GET Liste
http GET http://127.0.0.1:8000/api/movies/
GET Detail
http GET http://127.0.0.1:8000/api/movies/1/
POST erstellen
http POST http://127.0.0.1:8000/api/movies/ title="Inception" year=2010 genre="Sci-Fi" rating=8.8
PATCH teilweise
http PATCH http://127.0.0.1:8000/api/movies/1/ rating=9.0
PUT komplett
http PUT http://127.0.0.1:8000/api/movies/1/ title="The Matrix Reloaded" year=2003 genre="Sci-Fi" rating=7.2
DELETE löschen
http DELETE http://127.0.0.1:8000/api/movies/1/