EMZETT.
Login

Virtuelle Umgebung (Virtual Environment)

Kurz: Eine virtuelle Umgebung ist ein abgeschotteter Arbeitsbereich für ein Projekt mit eigener Version der Programmiersprache und eigenen Bibliotheken. Sie verhindert, dass sich Projekte gegenseitig stören. Das ist etwas anderes als eine virtuelle Maschine.

Genauer: Hat Projekt A Bibliothek X in Version 1 und Projekt B dieselbe in Version 2, würden beide im selben System kollidieren. Mit einer virtuellen Umgebung bekommt jedes Projekt seinen eigenen Satz Pakete.

Im Detail

# Python: venv
python -m venv .venv
source .venv/bin/activate          # Windows: .venv\Scripts\activate
pip install requests
pip freeze > requirements.txt      # Abhängigkeiten festhalten
deactivate
SpracheWerkzeugOrdner
Pythonvenv, virtualenv, uv, Poetry, Conda.venv/
JavaScriptnode_modules pro Projekt (npm, pnpm), Versionen mit nvmnode_modules/
JavaMaven/Gradle holen Abhängigkeiten je Projekt, JDK-Wahl mit SDKMAN~/.m2, build/
RubyBundler, rbenvvendor/bundle
AlleDev-Container, Nix
  • Wie es funktioniert: Die Umgebung hat einen eigenen Ordner mit Interpreter-Kopie oder -Verweis und eigener Paketablage. Beim „Aktivieren” zeigt der PATH auf diesen Ordner.
  • Abhängigkeitsdatei: requirements.txt, package-lock.json, pom.xml halten fest, was installiert wurde, damit andere dasselbe Ergebnis bekommen.
  • Nicht ins Git: Der Ordner der Umgebung gehört in .gitignore. Nur die Abhängigkeitsliste wird eingecheckt.
  • Nie global installieren (sudo pip install), das verschmutzt das System.
  • Abgrenzung: Virtuelle Umgebung = getrennte Pakete im selben Betriebssystem. Container und VM isolieren zusätzlich Betriebssystem-Teile.
  • Fehlerbild: „Es läuft bei mir, bei dir nicht”: meist fehlende oder andere Paketversionen. Eine saubere Umgebung mit festgehaltenen Versionen löst das.

Siehe auch: Virtuelle Maschine (VM), Sandbox, Docker