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