Das Umgehen mit virtuellen Umgebungen
Eine Einführung in die Einrichtung einer virtuellen Umgebung in Python.
Warum sind virtuelle Umgebungen wichtig?
Für jedes neue Data-Science Projekt, das begonnen wird - sei es in Python, R oder in einer anderen Programmiersprache - wird empfohlen, zunächst eine virtuelle Umgebung zu erstellen, anstatt jedes neue Projekt über eine globale Umgebung aufzusetzen. Warum? Weil, sobald begonnen wird, Packages eines spezifischen (aktuellen) Projektes zu aktualisieren, ein Risiko besteht, dass ein anderes (unabhängiges) Projekt nicht mehr funktioniert. Der Grund, weshalb das eine Projekt dann nicht mehr funktioniert, lässt sich darauf zurückführen, dass die neu aktualisierten Packages im aktuellen Projekt einige Abhängigkeitsprobleme mit einem / mehreren anderen Package(s) verursachen könnte(n), welche(s) in einem der älteren Projekte verwendet wurde(n).
- Und die (schlimmste) Konsequenz daraus ist: Ein gesamtes (altes, aber dennoch ausgefeiltes) Projekt könnte nicht mehr funktionieren und viele Stunden harter Arbeit könnten dadurch verschwendet sein!
Um diese Abhängigkeits-Alpträume in einer einzigen globalen Umgebung zu vermeiden, wurden virtuelle Umgebungen geschaffen, die es jedem (Data-Science) Projekt ermöglichen, ein unabhängiges Stück Software zu sein. Wenn wir also eine Bibliothek aktualisieren, geschieht dies auf Projektebene und nicht mehr auf globaler Ebene (und wir werden unsere harte Arbeit in alten Projekten nie mehr zerstören)! 🔥
Ein Beispiel
Das Hauptziel dieses Beitrags ist es, anhand eines konkreten Beispiels aufzuzeigen, wie eine virtuelle Umgebung eingerichtet werden kann.
Wir starten mit einem “weissen Blatt” (= neues Projekt). Nehmen wir an, unser Ziel ist es, eine Powerpoint-Präsentation zu automatisieren. Dies ist möglich, indem wir - beispielsweise - das Python-Package python-pptx
installieren. Bevor wir mit der Installierung des python-pptx
Packages beginnen, werden wir eine virtuelle Umbegung kreieren, um Abhängigkeitsprobleme mit anderen Projekte zu vermeiden.
Das Set-Up
Bevor wir beginnen:
Wir müssen sicherstellen, dass wirpython
auf unserem Rechner installiert haben! Hierzu muss ein Terminal geöffnet werden, um folgenden Code einzugeben:python --version
. Falls das Terminal uns ein Feedback mit einer Version von Python ausgibt, dann ist Python auf unserem Computer einsatzbereit 💪
Als nächstes, noch eine Bemerkung: dieses Set-Up wurde für Nutzer gedacht, die VS-Code
als ihre IDE benutzen. Es sollte aber auch mit jedem anderen IDE - zum Beispiel PyCharm oder R - funktionieren:
- Zunächst erstellen wir einen neuen
Projekt
-Ordner. Dieser dient als Ablage für alle unsere Files, die wir für dieses Projekt benötigen. Der Name für diesenProjekt
-Ordner kann beliebig gewählt werden. In meinem Fall, habe ich mich für den Namenpowerpoint-automation
entschieden. Dies wird unser sogenanntes “Arbeitsverzeichnis” (oftmals wird es auch “Working Directory” bezeichnet, aus dem Englischen) für dieses Projekt sein. - Als nächstes müssen wir in unser Arbeitsverzeichnis wechseln (der Computer weiss das noch nicht). Für diesen Schritt benötigen wir ein Terminal. Öffnen Sie Ihr Terminal und geben Sie den Pfad ein, in dem sich Ihr Projekt (das wir im ersten Schritt erstellt haben) befindet. Um im Rahmen meines Beispiels zu bleiben, gebe ich deshalb folgenden Code im Terminal ein:
cd /Users/jomaye/Documents/Programming/Python/projects/powerpoint-automation
, wobeicd
der Befehl ist, um dem Computer mitzuteilen, dass wir uns in den Ordnerpowerpoint-automation
bewegen wollen und dabei/Users/jomaye/Documents/Programming/Python/projects/powerpoint-automation
der Pfad zu meinem Arbeitsverzeichnis ist.
Erstellung einer virtuellen Umgebung
Nun haben wir das Set-Up beisammen, um - als Nächstes - eine virtuelle Umgebung in Python (mit der Verwendung von venv
) zu erstellen. Dies geht in 3 Schritten:
- Wir müssen in unserem Terminal folgendes eingeben (es ist dabei wichtig sicherzustellen, dass wir uns im Arbeitsverzeichnis befinden!):
python3 -m venv ppp-env2
. Dadurch wird die virtuelle Umgebung mit dem Namenppp-env2
erstellt. - Als nächstes muss die virtuelle Umgebung noch aktiviert werden (zur Zeit wurde Sie bloss erstellt, befindet sich jedoch in einem inaktiven Zustand). Je nachdem, was für eine Art von Computer wir verwenden, wird sich der Code allerdings ein bisschen unterscheiden:
- Falls Sie einen Mac benutzen, wird folgender Code benötigt:
source ppp-env2/bin/activate
. - Falls Sie einen Windows-Computer benutzen, wird folgender Code benötigt:
ppp-env2\Scripts\activate.bat
- Falls Sie einen Mac benutzen, wird folgender Code benötigt:
- Um zu überprüfen, ob alles funktioniert, geben wir abschliessend das Folgende in unserem Terminal ein:
python --version
Das war’s mit der Installation der virtuellen Umgebung! Herzlichen Glückwunsch 🥳 Nun können wir mit dem eigentlichen Aufsetzen des Projektes beginnen.
Installation der benötigten Packages
Nun, da die virtuelle Umgebung eingerichtet ist, können wir damit beginnen, die benötigten Pakete zu installieren.
In diesem Beispiel benötige ich nur 1 Paket:
pip install python-pptx
Erstellen unserer ersten automatisierten Powerpoint
Nun, da wir die notwendigen Packages für unser Beispiels-Projekt installiert haben, können wir mit dem Aufbau unserer ersten Python-Powerpoint Präsentation beginnen:
- Hierzu erstellen wir zunächst eine
.py
-Datei in unserempowerpoint-automation
-Ordner (= mein Arbeitsverzeichnis).- Ich nenne meine Datei:
hello-world.py
- Ich nenne meine Datei:
- Als nächstes fügen wir folgenden Code in die neue Datei
hello-world.py
ein:
from pptx import Präsentation
prs = Präsentation()
titel_folien_layout = prs.folien_layouts[0]
Folie = prs.slides.add_slide(title_slide_layout)
Titel = Folie.Formen.Titel
subtitle = slide.placeholders[1]
title.text = "Hallo, Welt!"
subtitle.text = "python-pptx war hier!"
prs.save('test.pptx')
- Zu guter Letzt, können wir das Python-Skript
hello-world.py
ausführen, indem wir ins Terminal wechseln und dabei folgendes eintippen:python hello-world.py
.- Wenn ein Fehler wie
"File "hello-world.py", line 1, in <module> from pptx import Presentation
auftritt: Führen Sie stattdessenpython3 hello-world.py
aus.
- Wenn ein Fehler wie
Potenzielles Problem mit virtuellen Umgebungen
Für Anfänger kann ein sehr frustrierendes Problem auftreten, wenn sie das erste Mal mit virtuellen Umgebungen in Kontakt kommen:
**Falls nämlich ein Name von irgendeinem beliebigen Ordner geändert wird, welcher im Pfad eines Projekts mit einer virtuellen Umgebung definiert wurde, führt das dazu, dass das Projekt mit der falschen Python-Version laufen wird.
Als ich zum Beispiel meinen Projektpfad änderte, führte dies dazu, dass mein Projekt mit der Version 2.7.16
(statt eigentlich Python 3.8.2
) lief und alle Code-Ausfürungen im Projekt durcheinanderbrachte! Um zu verstehen, warum das Projekt jetzt mit der falschen Python-Version lief, musste ich zu folgendem Ordner navigieren (vorausgesetzt, dass man sich gerade im Arbeitsverzeichnis des Projekts befindet!): Pfad_zur_virtuellen_Umgebung/bin/activate
.
Als nächstes muss die activate
-Datei geöffnet werden. Nachdem diese geöffnet wurde, sollte die Variable VIRTUAL_ENV
überprüft werden. In meinem Fall sah ich das Folgende:
VIRTUAL_ENV="/Users/jomaye/Documents/Programming/Python/projects/libraries-to-try/statsmodels/env-statmodels"
Um den Fehler zu beheben, musst ich bloss den Pfad der Variable VIRTUAL_ENV
wie folgt ändern:
VIRTUAL_ENV="/Users/jomaye/Documents/Programming/Python/projects/data-science/statsmodels/env-statmodels"
Wie aus dem obigen Beispiel gesehen werden kann, bestand das Problem darin, dass ich den Ordner libraries-to-try
in data-science
umbenannt hatte. Daher war der Pfad zu venv
falsch und führte dazu, dass der Computer automatisch auf die Standard-Python-Version 2.7.16
umschaltete, die auf meinem Mac installiert ist (anstatt der Python 3.8.2
-Version, die ich eigentlich wollte…)_.
Um zu überprüfen, ob das Problem behoben werden konnten, muss abschliessend nur noch folgendes ins Terminal eingegeben werden: python --version
.
Wenn hierbei - als Feedback - nun die Verwendung einer neueren Python-Version angegeben wird (also in meinem Fall Python 3.8.2
, statt der alten Version 2.7.16
), dann sollte die virtuelle Umgebung wieder einwandfrei funktionieren! 🤩
Fazit
In diesem Artikel habe ich gezeigt, wie wichtig die Verwendung einer virtuellen Umgebung beim Start eines neuen (Data-Science) Projekts ist. Ob für kleinere oder größere Projekte, eine kontrollierte (virtuelle) Umgebung im Vergleich zu einer einzigen globalen Umgebung verringert das Risiko, dass eines unserer älteren Projekte aufgrund von Abhängigkeitsproblemen nicht mehr läuft, beträchtlich.
Allerdings haben virtuelle Umgebungen auch ihre Nachteile. Das Ändern des Pfades zu einem Projekt mit einer virtuellen Umgebung führt dazu, dass es die globale Python-Version ausführt, die auf unserem Computer installiert ist, statt derjenigen Python-Version, die wir in der virtuellen Umgebung festgelegt haben, was mit Sicherheit dazu führt, dass unser Projekt ebenfalls nicht mehr einfwandfrei läuft. Um dieses Problem zu beheben, muss der Pfad unserer VIRTUAL_ENV
-Variablen in der activate
-Datei abgeändert werden, welche sich auf dem Pfad_zu_unserer_virtuellen_Umgebung/bin/activate
-Pfad unseres Arbeitsverzeichnisses befindet.