Virtuelle Python-Umgebungen bereinigen

PythonBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie die wesentlichen Praktiken für die Verwaltung von Python-virtuellen Umgebungen kennen. Wir werden behandeln, wie man eine isolierte Umgebung für ein Projekt erstellt, spezifische Abhängigkeiten installiert, unnötige Pakete entfernt und schließlich die Umgebung löscht, um Speicherplatz freizugeben. Diese Fähigkeiten sind grundlegend für die Aufrechterhaltung eines sauberen und organisierten Entwicklungs-Workflows.

Erstellen und Aktivieren einer virtuellen Umgebung

Zuerst erstellen wir eine isolierte Umgebung für ein Beispielprojekt. Die Verwendung einer virtuellen Umgebung stellt sicher, dass die Pakete für dieses Projekt nicht mit Paketen für andere Projekte oder der systemweiten Python-Installation in Konflikt geraten. Wir werden das venv-Modul verwenden, das das Standardwerkzeug ist, das mit Python geliefert wird.

Das Setup-Skript hat bereits ein Projektverzeichnis für uns unter /home/labex/project/my_web_app erstellt. Navigieren wir dorthin.

cd my_web_app

Erstellen Sie nun eine virtuelle Umgebung namens venv innerhalb dieses Verzeichnisses. Es ist eine gängige Konvention, das Verzeichnis der Umgebung venv zu nennen.

python3 -m venv venv

Dieser Befehl erstellt ein venv-Verzeichnis, das eine neue Python-Installation enthält. Sie können dessen Inhalt anzeigen, indem Sie Folgendes ausführen:

ls -F venv/

Sie sollten Unterverzeichnisse wie bin/, include/, lib/ und eine Konfigurationsdatei sehen.

bin/  include/  lib/  lib64@  pyvenv.cfg

Um diese Umgebung nutzen zu können, müssen Sie sie "aktivieren".

source venv/bin/activate

Nachdem Sie diesen Befehl ausgeführt haben, werden Sie feststellen, dass sich Ihre Shell-Eingabeaufforderung ändert und (venv) enthält, was anzeigt, dass die virtuelle Umgebung aktiv ist. Alle Python- oder Pip-Befehle, die Sie jetzt ausführen, verwenden die ausführbaren Dateien und Pakete innerhalb dieser Umgebung.

Sie können dies überprüfen, indem Sie den Pfad zur Python-ausführbaren Datei überprüfen:

which python

Die Ausgabe wird auf die Python-Binärdatei innerhalb Ihres venv-Verzeichnisses verweisen.

/home/labex/project/my_web_app/venv/bin/python

Installieren und Isolieren von Abhängigkeiten

Mit der aktiven virtuellen Umgebung können wir nun die Abhängigkeiten des Projekts installieren. Für Sie wurde eine requirements.txt-Datei erstellt, die die notwendigen Pakete auflistet.

Installieren Sie die Pakete mit pip:

pip install -r requirements.txt

Pip lädt flask und requests sowie deren Abhängigkeiten herunter und installiert sie in venv.

Um die speziell in dieser Umgebung installierten Pakete anzuzeigen, verwenden Sie pip list:

pip list

Sie sehen flask, requests und andere Pakete, die gerade installiert wurden.

Package            Version
------------------ --------
certifi            ...
charset-normalizer ...
click              ...
Flask              2.2.2
idna               ...
itsdangerous       ...
Jinja2             ...
MarkupSafe         ...
pip                ...
requests           2.28.1
setuptools         ...
urllib3            ...
Werkzeug           ...

Nun sehen wir die Macht der Isolation. Deaktivieren Sie die Umgebung, um zu Ihrem globalen Systemkontext zurückzukehren.

deactivate

Das Präfix (venv) in Ihrer Eingabeaufforderung verschwindet. Führen Sie nun erneut pip list aus.

pip list

Sie werden feststellen, dass flask und requests nicht mehr in der Liste sind, da sie nur innerhalb der virtuellen Umgebung installiert wurden, wodurch Ihre globale Python-Umgebung sauber bleibt.

Entfernen von ungenutzten Paketen

Wenn sich ein Projekt weiterentwickelt, können einige Abhängigkeiten obsolet werden. Es ist gute Praxis, diese zu entfernen, um die Umgebung schlank zu halten und Ihre requirements.txt-Datei zu aktualisieren.

Aktivieren Sie zunächst die virtuelle Umgebung erneut, um deren Pakete zu verwalten.

source venv/bin/activate

Nehmen wir an, unser Projekt benötigt das requests-Paket nicht mehr. Wir können es mit pip deinstallieren. Das Flag -y bestätigt die Deinstallation automatisch.

pip uninstall -y requests

Überprüfen Sie, ob das Paket entfernt wurde, indem Sie die installierten Pakete erneut auflisten.

pip list

Sie werden sehen, dass requests und seine Abhängigkeiten (wie urllib3, certifi usw., falls sie von keinem anderen Paket mehr benötigt werden) verschwunden sind.

Nachdem Sie ein Paket entfernt haben, sollten Sie Ihre requirements.txt-Datei aktualisieren, um den aktuellen Zustand der Umgebung widerzuspiegeln. Dies können Sie tun, indem Sie die aktuelle Paketliste in die Datei "einfrieren".

pip freeze > requirements.txt

Sie können die aktualisierte Datei anzeigen, um die Änderung zu bestätigen:

cat requirements.txt

Die Datei listet nun nur noch flask und seine Abhängigkeiten auf.

click==...
Flask==2.2.2
itsdangerous==...
Jinja2==...
MarkupSafe==...
Werkzeug==...

Schließlich deaktivieren wir die Umgebung vorerst.

deactivate

Löschen der gesamten virtuellen Umgebung

Wenn ein Projekt abgeschlossen ist oder Sie mit einer neuen Umgebung neu beginnen möchten, ist die einfachste Bereinigungsmethode das Löschen des gesamten Verzeichnisses der virtuellen Umgebung.

Stellen Sie zunächst sicher, dass Sie sich nicht im Verzeichnis my_web_app befinden, da es im Allgemeinen keine gute Idee ist, ein Verzeichnis zu löschen, in dem Sie sich gerade befinden. Wechseln wir in das übergeordnete Verzeichnis.

cd /home/labex/project

Bevor Sie es löschen, können Sie mit dem Befehl du (disk usage) überprüfen, wie viel Speicherplatz die virtuelle Umgebung belegt.

du -sh my_web_app/venv

Die Ausgabe zeigt die Gesamtgröße des Verzeichnisses an.

30M     my_web_app/venv

Entfernen Sie nun das gesamte Verzeichnis venv. Der Befehl rm -rf entfernt das Verzeichnis und dessen gesamten Inhalt rekursiv und zwangsweise. Seien Sie vorsichtig mit diesem Befehl.

rm -rf my_web_app/venv

Überprüfen Sie, ob das Verzeichnis verschwunden ist, indem Sie den Inhalt von my_web_app auflisten.

ls my_web_app

Sie werden sehen, dass nur die Datei requirements.txt übrig bleibt. Die virtuelle Umgebung wurde vollständig bereinigt.

requirements.txt

Zusammenfassung

In diesem Lab haben Sie den vollständigen Lebenszyklus der Verwaltung einer Python-virtuellen Umgebung kennengelernt. Sie haben das Erstellen einer Umgebung mit venv, deren Aktivierung, die Installation von Abhängigkeiten aus einer requirements.txt-Datei, die Beobachtung der Paketisolation, das Entfernen nicht benötigter Pakete und schließlich die Bereinigung durch Löschen des gesamten Umgebungsverzeichnisses geübt. Dies sind entscheidende Fähigkeiten für jeden Python-Entwickler, um saubere, reproduzierbare und konfliktfreie Projekt-Setups zu pflegen.