Um ab Raspberry OS „Bookworm“ Python-Erweiterungen mit „pip“ zu installieren, muss das Virtual Environment genutzt werden. Das Virtual Environment ist eine virtuelle Python-Umgebung. Diese virtuelle Kopie soll davor schützen, dass externe Bibliotheken Schadsoftware oder Fehler mit sich bringen, die direkt ins System installiert werden.
Für die Verwendung ist in der Standard-Installation keine weitere Software erforderlich, die geladen und installiert werden muss. Das Environment lässt sich direkt anlegen.
Dabei gibt es zwei Konzepte:
- Je Erweiterung ein Environment
- Ein Environment je User/Benutzerkonto
Virtual Environment anlegen
Um ein Environment für den User zu erstellen, erstellt man dies im Home-Verzeichnis des aktiven Users.
$ python -m venv ~/.env
Es wird ein Verzeichnis „.env“ (Punkt am Anfang!) angelegt. Dies Verzeichnis ist in der Standardverzeichnisliste „versteckt“. Wenn man das Verzeichnis nicht verstecken will, kann man es auch anders benennen. (z.B. „Environment“, „Python_Sandbox“ oder wie auch immer.)
Um ein Environment für jede Erweiterung oder Projekt anzulegen, die man mit Python-pip nutzen will, muss dies entsprechend benennen.
$ python -m venv env-esptool
Dabei wird ein Verzeichnis „env-esptool“ im aktuell aufgerufenem Verzeichnis angelegt.
Virtual Environment „aktivieren“
Um dann das User-Environment aufrufen, wird dies wie folgt im Terminal eingegeben:
$ source ~/.env/bin/activate
Wie zu erkennen ist, wird der Pfad mit „~/.env“ angegeben und dann das vom Environment angelegte Script „activate“ im Unterverzeichnis „/bin/“ aufgerufen. Dies Script passt z.B. die $PATH (Systemvariablen) an, damit die Python-Umgebung aus dem Unterverzeichnis genutzt wird. Es bildet sozusagen eine Kopie des im System integrierten Python.
Das Python-Projekt bezogene Environment wird entsprechend aufgerufen:
$ source ~/env-esptool/bin/activate
Nachdem man das entsprechende Environment aufgerufen hat, wird dies durch den Namen des Environment vor dem Prompt angezeigt:
(.env) user@raspberrypi $
(env-esptool) user@raspberrypi $
Python-Erweiterungen im Environment installieren
In dem aktiven Environment können jetzt die benötigten Erweiterungen z.B. mit „pip“ installiert werden.
(.env) user@raspberrypi $ pip install esptool
Der Paketmanager „pip“ installiert jetzt die benötigten Tools in das Verzeichnis des Environment. Nach der Installation lässt sich das Tool in dem aktiven Environment nutzen.
Environment wieder abschalten und erneut aktivieren
Um das Environment zu deaktivieren wird es mit dem Befehl „deactivate“ abgeschaltet. Dabei wird das „activate“-Script aufgerufen und macht z.B. die zuvor gemachten Änderungen an der Variable $PATH rückgängig. Dadurch werden die installierten Tools aus dem Pfad genommen und können nicht mehr direkt genutzt werden. Der Python-Code bzw. das Python-Tool welches mit pip installiert wird, ist auch nur in der entsprechenden virtuellen Python-Umgebung ohne Fehler lauffähig.
Um das Virtual Environment erneut zu nutzen, kann es wie zuvor wieder aktiviert werden.
$ source ~/.env/bin/activate