Schlagwort: Virtual Environment

  • Python3, Virtual Environment

    Grundlagen

    Ein Virtual Environment (venv) ist eine „virtuelle Umgebung“, in der eine Python‑Installation und die installierten Pakete für ein konkretes Projekt von der Python-Installation des Betriebssystems isoliert werden.

    Folie: Python Virtual Environment

    Sie wird auf einer bestehenden Python-Installation erstellt. Eingesetzt wird meist das Python Modul venv, um ein Virtual Environment einzurichten.

    Unterschiedliche Projekte können jeweils eine separate virtuelle Umgebungen haben.

    Grafik: virtual environment.

    Jedes Projekt kann exakt die Python- Bibliotheken und Versionen verwenden, die es benötigt, ohne andere Projekte zu beeinflussen. So lässt sich vermeiden, dass ein Update einer Bibliothek in einem Projekt plötzlich Breakages in einem anderen verursacht.

    Der globale Python‑Interpreter bleibt unverändert und frei von experimentellen Paketen. Das reduziert das Risiko, das Betriebssystem‑Python zu beschädigen – besonders wichtig auf Linux‑Distributionen, wo das System‑Python von vielen System‑Tools genutzt wird.

    Durch das Dokumentieren der Paketliste eines Projekts (meist in einer requirements.txt‑Datei) kann man die komplette Entwicklungsumgebung leicht auf andere Rechner übertragen.

    Einrichtung

    Für das Erstellen und Verwalten. von Pyhton3 virtuellen Umgebungen wird das Paket python3-venv benötigt.

    Unter Fedora (aktuell Fedora 42) ist das Paket meist bereits vorhanden. Falls nicht installieren Sie es mit

    sudo def upgrade -y
    sudo dnf install python3-venv

    auf Debian-basierten Systemen, Ubuntu, Linux Mint, muss es manuell installiert werden.

    Im Terminal:

    sudo apt update && sudo apt upgrade -y
    sudo apt install python3-venv

    Für die Einrichtung des Virtual Environment erstellen Sie zunächst einen Projektordner

    mkdir myPython

    und wechseln in das Verzeichnis:

    cd myPython

    Die Einrichtung erfolgt mit dem Befehl:

    python -m venv .venv

    Anschließend muss das Virtual Environment noch aktiviert werden:

    source .venv/bin/activate

    Dadurch ändert sich der Prompt, der Name des .venv ist nun vorangestellt. Die bereits auf dem System vorhandenen Pakete werden in die virtuelle Umgebung übernommen.

    Windows 11

    Das Virtual Environment einrichten:

    python -m venv env

    Dabei ist env der Name des neuen Verzeichnisses für die Python-Umgebung. Sie können es auch anders benennen.

    Aktivieren über die Standard-Eingabeaufforderung CMD:

    .\env\Scripts\activate.bat

    in der PowerShell:

    .\env\Scripts\activate.ps1

    MacOS

    Ist eine aktuelle Python3- Installation vorhanden, verwenden Sie zum Einrichten und Aktivieren die gleichen Befehle, wie oben für Linux beschrieben. Das Paket python3-venv muss hier nicht manuell installiert werden.

    Virtual Environment verlassen

    Sie verlassen die die virtuelle Umgebunt mit dem Befehl deactivate. Sollte ein Notebook-Server in der virtuellen Umgebung laufen, beenden Sie ihn vorher mit Ctrl + C.

    Erneut öffnen

    Um eine einmal eingerichtet Virtuelle Umgebung erneut zu öffnen wechseln Sie zunächst in das Verzeichnis, in unserem Beispiel:

    cd myPython

    und starten die venv (unter Ubuntu) mit

    source .venv/bin/activate

    bzw. den oben für Windows angegebenen Befehlen.

    Fehler nach dem Ändern der Verzeichnis-Struktur

    Ein Virtual Environment ist im Wesentlichen ein Verzeichnis, das mehrere Dinge enthält:

    • eine Kopie bzw. Symlink des Python‑Interpreters,
    • ein bin‑ (oder Scripts‑) Verzeichnis mit Wrapper‑Skripten für python, pip usw.
    • eine pyvenv.cfg‑Datei, die Metadaten über das Umfeld speichert, insbesondere den Pfad zum „originären“ Python‑Interpreter, mit dem das Umfeld erstellt wurde.

    Wenn Sie das Projektverzeichnis, also das Verzeichnis, das das virtuelle Umfeld enthält, umbenennenn, passiert Folgendes:

    Der absolute Pfad, unter dem das Umfeld jetzt liegt, ändert sich. Die Wrapper‑Skripte in bin/Scripts enthalten hartkodierte absolute Pfade zum Interpreter und zu anderen Ressourcen. Sie wurden beim Anlegen des Umfelds mit dem alten Pfad erzeugt und werden nach der Änderung nicht mehr gefunden.

    Die meisten Dateien im virtuellen Umfeld speichern absolute Pfade, die beim Umbenennen des übergeordneten Ordners nicht automatisch aktualisiert werden. Deshalb „startet“ das Umfeld nicht mehr – python oder pip können nicht gefunden werden, und das Aktivierungsskript weist auf einen falschen Ort. Auch in darin installierter Jupyter Notebook-Server lässt sich dann nicht mehr starten.

    Um das Problem zu beheben, löschen Sie das vorhandene Virtual Environment und erstellen ein neues. Sichern Sie vorher vorsorglich Ihre Python-Skripte oder Jupyter-Notebook-Dateien in einem separaten Verzeichnis.