Einführung
Python-Projekte benötigen häufig unterschiedliche Paketversionen. Eine Virtual Environment (virtuelle Umgebung) stellt einem Projekt einen eigenen Python-Interpreter und ein eigenes Paketverzeichnis zur Verfügung. Dadurch hat die Installation eines Pakets für ein Projekt keine Auswirkungen auf die globale Python-Umgebung oder andere Projekte.
In diesem Lab erstellst du mit dem integrierten venv-Modul eine virtuelle Umgebung, aktivierst sie, installierst ein Paket darin und erstellst eine zweite Umgebung, um zu bestätigen, dass die Umgebungen voneinander isoliert sind. Alle Arbeiten finden im Verzeichnis /home/labex/project statt.
Erstellen einer virtuellen Umgebung für das Projekt
In diesem Schritt erstellst du eine virtuelle Umgebung für ein Python-Projekt. Eine virtuelle Umgebung ist im Grunde nur ein Verzeichnis, das eine ausführbare Python-Datei, Aktivierungsskripte und einen eigenen Bereich für die Paketinstallation enthält.
Wechsle zunächst in das Projektverzeichnis. Wenn du die Lab-Dateien unter /home/labex/project ablegst, ist die Umgebung leicht zu finden und deine Arbeit bleibt von Systemdateien getrennt.
cd /home/labex/project
Bevor du die Umgebung erstellst, überprüfe die auf dem System verfügbare Python-Version. Der Befehl python3 --version gibt die Interpreter-Version aus, die venv verwenden wird.
python3 --version
Du solltest eine Python 3-Ausgabe sehen, die in etwa so aussieht:
Python 3...
Erstelle nun eine virtuelle Umgebung mit dem Namen project-env. Die Option -m venv weist Python an, das integrierte venv-Modul als Befehlszeilenwerkzeug auszuführen, und project-env ist das Verzeichnis, das die Umgebung enthalten wird.
python3 -m venv project-env
Lasse dir den Inhalt des neuen Verzeichnisses anzeigen, um die von venv erstellte Struktur zu sehen.
ls project-env
Die genauen Einträge können leicht variieren, aber du solltest Dateien und Ordner wie diese sehen:
bin
include
lib
pyvenv.cfg
Die Datei pyvenv.cfg protokolliert, wie die Umgebung erstellt wurde. Untersuche sie jetzt.
cat project-env/pyvenv.cfg
Suche nach include-system-site-packages = false. Diese Einstellung bedeutet, dass diese Umgebung nicht automatisch global installierte Python-Pakete teilt.
Aktivieren der Umgebung und Installieren eines Pakets
In diesem Schritt aktivierst du project-env und installierst ein Paket darin. Die Aktivierung ändert die Umgebungsvariablen der Shell, sodass Befehle wie python und pip zuerst auf die virtuelle Umgebung verweisen.
Stelle sicher, dass du dich weiterhin im Projektverzeichnis befindest.
cd /home/labex/project
Verwende source, um das Aktivierungsskript in deiner aktuellen Shell auszuführen. Dies ist wichtig, da ein untergeordnetes Skript die übergeordnete Shell nicht ändern kann, source jedoch die Shell aktualisieren kann, in der du gerade arbeitest.
source project-env/bin/activate
Nach der Aktivierung beginnt der Shell-Prompt normalerweise mit (project-env). Bestätige, dass python nun auf die virtuelle Umgebung verweist, indem du zwei Pfade von Python ausgibst. sys.prefix ist die aktive Umgebung, während sys.base_prefix die Basis-Python-Installation darstellt.
python -c "import sys; print(sys.prefix); print(sys.base_prefix)"
Die erste Zeile sollte deine virtuelle Umgebung sein, die zweite Zeile der Speicherort des System-Python:
/home/labex/project/project-env
/usr...
Installiere ein kleines Paket namens colorama in der aktiven Umgebung. Die Ausführung von python -m pip verwendet das pip, das zum aktuell aktiven Python-Interpreter gehört.
python -m pip install colorama==0.4.6
Wenn die Installation abgeschlossen ist, sollte pip melden, dass colorama erfolgreich installiert wurde.
Überprüfe das Paket von Python aus, indem du es importierst und seine Version ausgibst.
python -c "import colorama; print(colorama.__version__)"
Die Ausgabe sollte wie folgt lauten:
0.4.6
Du kannst die virtuelle Umgebung mit deactivate verlassen. Dadurch wird das Suchverhalten von python und pip wieder auf die normale Shell-Umgebung zurückgesetzt.
deactivate
Erstellen einer zweiten isolierten Umgebung
In diesem Schritt erstellst du eine weitere virtuelle Umgebung und vergleichst sie mit project-env. Separate Umgebungen können denselben Basis-Python-Interpreter verwenden, während ihre installierten Pakete getrennt bleiben.
Kehre zum Projektverzeichnis zurück.
cd /home/labex/project
Finde die ausführbare Datei python3 des Systems. Der Befehl command -v gibt den Pfad aus, den die Shell für einen Befehlsnamen ausführen würde.
command -v python3
Der Pfad lautet normalerweise:
/usr/bin/python3
Erstelle eine zweite Umgebung namens tools-env. Die Option --prompt tools-env legt den Text für den Aktivierungs-Prompt fest, was hilfreich ist, wenn du mit mehreren Umgebungen arbeitest.
python3 -m venv --prompt tools-env tools-env
Vergleiche nun die Präfixe der beiden Umgebungen. Jeder Befehl führt die ausführbare Python-Datei innerhalb einer anderen virtuellen Umgebung aus und gibt ihr aktives Präfix aus.
project-env/bin/python -c "import sys; print(sys.prefix)"
tools-env/bin/python -c "import sys; print(sys.prefix)"
Du solltest zwei verschiedene Verzeichnisse sehen:
/home/labex/project/project-env
/home/labex/project/tools-env
Überprüfe abschließend, ob colorama in tools-env verfügbar ist. Du hast colorama nur in project-env installiert, daher sollte die zweite Umgebung es nicht finden.
tools-env/bin/python -c "import importlib.util; print(importlib.util.find_spec('colorama'))"
Die erwartete Ausgabe ist:
None
Dies bestätigt, dass Pakete, die in einer virtuellen Umgebung installiert wurden, nicht automatisch in einer anderen virtuellen Umgebung erscheinen.
Zusammenfassung
Du hast eine Python-Virtual-Environment erstellt, ihre Konfiguration untersucht, sie aktiviert, ein Paket darin installiert und eine zweite Umgebung erstellt, um die Paketisolierung zu bestätigen. Du hast außerdem den Umgang mit python3 -m venv, source, python -m pip sowie direkten Python-Pfaden geübt, um zu verstehen, welcher Interpreter gerade ausgeführt wird.



