Zum Inhalt

Virtual Environments

Mit der Funktion des Venv (Virtual Environments) wird projektbezogen eine eigene - und damit unabhängig von der Basis-Installation) eine eigene Python-Umgebung erzeugt.

Vorbereitung Linux

Python ist bei den gängigen Linux-Distributionen bereits installiert. Der folgende Aufruf testet das Vorhandensein von pip:

Aufruf von pip über python
    python3.13 -m pip list

Ausgabe:

Package Version
------- -------
pip     24.3.1

Ansonsten:

Installation von pip
sudo apt-get install python3-pip

Es sollte das Projekt MyProj erzeugt und bearbeitet werden.

Variante: zu Fuss

  1. Erzeugen eines Projektverzeichnisses:

    mkdir z:/py/MyProj
    
    cd py\MyProj`
    

  2. Generieren des Venv:

    py -m venv .venv
    
    python3.13 -m venv .venv
    

    Unter Windows finden sich die folgenden Verzeichnisse:
    venv-Dir

  3. Aktivieren des Venv

    .venv\Scripts\activate.bat
    
    bash /home/pi/py/.venv/bin/activate
    
  4. Test des Venv

    pip list
    
    Ausgabe:
    Package Version
    ------- -------
    pip     23.3.1
    

  5. Installation eines Package:
    pip install numpy
    
    Ausgabe:
    Collecting numpy
    Downloading numpy-1.26.2-cp312-cp312-win_amd64.whl.metadata (61 kB)
        ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 61.2/61.2 kB 1.6 MB/s eta 0:00:00
    Downloading numpy-1.26.2-cp312-cp312-win_amd64.whl (15.5 MB)
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 15.5/15.5 MB 29.7 MB/s eta 0:00:00
    Installing collected packages: numpy
    Successfully installed numpy-1.26.2
    
    (.venv) Z:\py\MyProj>pip list
    Package Version
    ------- -------
    numpy   1.26.2
    pip     23.3.1
    

Info

mehr zu pip

Variante: VS-Code

Es wird ein Projektordner angelegt und mit Ctrl+K+O ausgewählt. Mit der Taste Ctrl+Shift+P wird der Befehl "Python: Umgebung erstellen..." ausgewählt select venv

"Interpreter auswählen"
select Interpreter

Sobald ein Python-File gestartet werden soll, aktiviert VS-Code das Venv automatisch! venv py run

Linux-Service anlegen

Für den Start eines Linux-Service muss anstatt dem globalen Python-Interpreter der Interpreter des Venv /home/myuser/py/gw08a/.venv/bin/python aufgerufen werden.

gatew.service
    [Unit]
    Description=GateWay service
    After=network.target

    [Service]
    ExecStart=/home/myuser/py/gw08a/.venv/bin/python -u gateW.py
    WorkingDirectory=/home/myuser/py/gw08a
    StandardOutput=inherit
    StandardError=inherit
    Restart=always
    User=myuser

    [Install]
    WantedBy=multi-user.target