Arbeiten mit venv (python)

melmager

Erfahrenes Mitglied
Wie arbeite ich mit der virtuellen Umgebung von Python?
Für jedes python Projekt eine virtuelle umgebung oder eine virtuelle Umgebung und da alle Projekte in Unterverzeichnissen rein ?

ein venv verzeichnis habe ich bereits ohne das ich ne ahnung hatte was ich damit tue :)

Letztlich brauche ich eine Umgebung für esphome und eine für micropython

also venv/esphomeprojektA
und
venv/micropythonprojektA

oder für beides ein Venv ordner ?
 
Wie arbeite ich mit der virtuellen Umgebung von Python?
Es gibt mittlerweile unzählige Manager für virtuelle Python-Umgebungen. Aber der "moderne Klassiker" ist venv, deshalb hier eine kurze Erklärung wie man das nach Lehrbuch macht:

Zuerst initialisierst du in deinem Projekt eine neue virtuelle Umgebung:
Bash:
$ cd /path/to/project
$ python -m venv env
In diesem Fall wird die virtuelle Umgebung env genannt und landet entsprechend in einem Unterverzeichnis ./env.
Dabei wird im Prinzip eine lokale Installation von Python abgebildet:
Bash:
$ tree -L 3 env
env
├── bin
│   ├── activate
│   ├── activate.csh
│   ├── activate.fish
│   ├── Activate.ps1
│   ├── pip
│   ├── pip3
│   ├── pip3.12
│   ├── python -> /usr/bin/python
│   ├── python3 -> python
│   └── python3.12 -> python
├── include
│   └── python3.12
├── lib
│   └── python3.12
│       └── site-packages
├── lib64 -> lib
└── pyvenv.cfg

8 directories, 11 files

Interessant: Bei der Einrichtung der v.U. mit venv wird ein Name verlangt (hier "env"), weil du theoretisch mehrere virtuelle Umgebungen gleichzeitig in deinem Projekt haben kannst. So kannst du dann z.B. verschiedene Versionen von Modulen und Bibliotheken einfach testen.

Um eine virtuelle Umgebung zu aktivieren, musst du sie lediglich sourcen:
Bash:
$ source env/bin/activate
(env) $ python --version
Python 3.x.x # läuft in der virtuellen Umgebung
(env) $ deactivate
$ echo "virtuelle Umgebung verlassen"

Und wie gezeigt kannst du sie mit deactivate wieder verlassen.
Alles in allem ziemlich einfach und unkompliziert. Und es hilft wirklich sich das System nicht mit allen möglichen Modulen vollzumüllen, von denen dann einige irgendwann inkompatibel zu anderen sind usw.

Für jedes python Projekt eine virtuelle umgebung oder eine virtuelle Umgebung und da alle Projekte in Unterverzeichnissen rein ?
Und gerade weil es so easy ist würde ich empfehlen für jedes (noch so kleine) Projekt einfach schnell eine eigene Umgebung einzurichten.

Tipp:
Wenn du mit virtuellen Umgebungen arbeitest (was ich empfehle!), dann solltest du die Umgebung selbst nicht in deiner Versionsverwaltung eintragen (also sie z.B. in deiner gitignore blacklisten). Stattdessen erstellst du eine Datei requirements.txt im Hauptordner deines Projektes und trägst dort die einzelnen Pakete (gerne mit Versionsnummer) ein, die in der virtuellen Umgebung installiert sein müssen.

Gruß Technipion
 

Neue Beiträge

Zurück