Zum Inhalt

Virtual Environments

mit PIP

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

UV

Die Installation ist in Kapitel beschrieben.

Projekt anlegen

Ein py-Projekt kann (muss aber nicht) mit einem virtuellen Enviroment für Python angelegt werden. Wesentlich für die Entwicklung und Pflege ist die Versionsabhängigkeit der py-App von der Version des Python-Interpreters und der benötigten Packages. Hier unterstützt UV.

Einrichten des Projektes exa
uv init exa

Es entsteht folgende Datei-Struktur:

├───exa
│       .python-version
│       main.py
│       pyproject.toml
│       README.md

mit den Dateiinhalten:

def main():
    print("Hello from exa!")


if __name__ == "__main__":
    main()
[project]
name = "exa"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.13"
dependencies = []

Venv erzeugen

Ein mit UV erzeugtes virtuelles Enviroment (Venv) wird direkt in die Projektverwaltung integriert.

cd exa
uv venv

Ausgabe:

Using CPython 3.13.4 interpreter at: C:\py\Python313\python.exe
Creating virtual environment at: .venv
Activate with: .venv\Scripts\activate

In VS Code kann dieses Venv wie gewohnt ausgewählt und genutzt werden.

Packages installieren

Ein Package (oder mehrere) lassen sich direkt mit UV installieren:

Beispiel

uv add fastapi
Ausgabe
Resolved 12 packages in 154ms                                                                                    
░░░░░░░░░░░░░░░░░░░░ [0/10] Installing wheels...                                                                 
warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance.             
        If the cache and target directories are on different filesystems, hardlinking may not be supported.     
        If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warnin
g.                                                                                                               
Installed 10 packages in 60ms                                                                                    
+ annotated-types==0.7.0                                                                                        
+ anyio==4.9.0                                                                                                  
+ fastapi==0.115.12                                                                                             
+ idna==3.10                                                                                                    
+ pydantic==2.11.5                                                                                              
+ pydantic-core==2.33.2                                                                                         
+ sniffio==1.3.1                                                                                                
+ starlette==0.46.2                                                                                             
+ typing-extensions==4.14.0                                                                                     
+ typing-inspection==0.4.1                                                                                      
pyproject.toml
[project]
name = "exa"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.13"
dependencies = [
    "fastapi>=0.115.12"
]

Die Installation mit Hilfe einer requirements.txt funktioniert entsprechend analog zu pip:

uv add -r requirements.txt

oder im übergeordneten bzw. zur Zeit aktivierten Venvuv :

uv pip install -r requirements.txt

UV-Infos

Mehr Infos finden sich auf derUV-Dokumentation: Doku