Nun geht es ans Eingemachte: Hier sehen wir uns ganz konkret an, wie du eine virtuelle Umgebung mit Python in der Praxis einrichtest und sicherst. Los geht’s.
Zwei der vielen Möglichkeiten: venv und virtualenv
Es gibt in Python viele Möglichkeiten, eine virtuelle Umgebung einzurichten, zwei Module hierfür sind die bekanntesten: venv und virtualenv
Seit Python Version 3.6 bringt die Standardinstallation venv mit und das ist hier das Tool unserer Wahl.
venv in der Praxis
Wir richten die virtuelle Umgebung am Beispiel unseres FizzBuzz-Programms ein, das wir im Rahmen der testgetriebenen Entwicklung erstellt haben.
Wir starten Visual Studio Code und öffnen den FizzBuzz-Ordner. Nun öffnen wir im Hauptmenü über den Punkt „Terminal“ ein „New Terminal“. Was wir hier machen, ginge ohne Weiteres auch über das Standardterminal, aber da wir VS Code aus unsere Python-IDE verwenden, ist dies eine gute Gelegenheit, einmal mehr Funktionen von VS Code kennenzulernen.
Im unten geöffneten Terminalbereich können wir durch die Eingabe von pwd
(print working directory) sehen, dass wir uns bereits im gewünschten FizzBuzz-Verzeichnis befinden. Somit können wir gleich mit der Einrichtung der virtuellen Umgebung loslegen:
python3 -m venv fizzbuzz_venv
Durch -m
sagen wir Python3, dass wir das folgende Modul – in unserem Fall venv
– ausführen möchten. Anschließend folgt der Name der virtuellen Umgebung – in unserem Fall fizzbuzz_venv
.
Nach Ausführen des Befehls fragt VS Code, ob wir die neu angelegte virtuelle Umgebung aktivieren möchten? Wir bestätigen dies und VS Code führt für uns den Befehl
source fizzbuzz_venv/bin/activate
aus. Außerhalb von VS Code, wenn wir diese Schritte im Terminal vollzogen hätten, wäre dieser Befehl tatsächlich auch der nächste in der Reihe gewesen.
Nun stellt VS Code fest, dass das Linter-Modul pylint nicht installiert ist und fragt, ob wir es installieren möchten. Auch dies bestätigen wir. VS Code führt für uns den Befehl
python3 -m pip install -U pylint
aus. Damit wird in unserer virtuellen Umgebung namens „fizzbuzz_venv“ der Linter „pylint“ installiert.
Dass wir eine aktivierte virtuelle Umgebung haben, können wir auch am Terminal-Prompt erkennen. Der sieht bei mir folgendermaßen aus:
(fizzbuzz_venv) macbook:fizzbuzz uem$
Der erste Teil des Prompts zeigt in Klammern den Namen unserer Umgebung.
Damit sind wir fürs Erste fertig. Auf der linken Seite nach einem Klick auf den Knopf namens „Explorer“ sehen wir nun zusätzliche Dateien in unserem FizzBuzz-Verzeichnis; die virtuelle Umgebung wurde in einem Verzeichnis „fizzbuzz_venv“ installiert. Zum Abschluss führen wir einmal unsere Tests aus, die wir in „TestFizzBuzz.py“ geschrieben haben. Einmal mehr lässt sich hier erkennen, wie nützlich diese Tests sind, denn dank ihrer können wir ganz einfach und schnell prüfen, ob unsere letzten Handlungen unser Programm beeinträchtigen oder nicht.
! Wichtig !
Wir haben nun eine aktive virtuelle Umgebung, in der wir arbeiten. Das war unser Ziel, das haben wir erreicht. Allerdings muss uns bewusst sein, dass wir beim Beenden von VS Code – genauer: unserer Terminal-Session – auch die aktive virtuelle Umgebung beenden.
Wir müssen also beim nächsten Mal, wenn wir unser Projekt geöffnet haben und wieder daran arbeiten wollen, erst mit dem Befehl
source fizzbuzz_venv/bin/activate
die virtuelle Umgebung erneut starten.
Eine aktive virtuelle Umgebung lässt sich übrigens auch per Befehl beenden, der da kurz und schmerzlos lautet:
deactivate
Sichern der virtuellen Umgebung
Nun gilt es die neu eingerichtete virtuelle Umgebung so zu sichern, dass sie auf anderen Rechnern schnell reproduziert werden kann. Schließlich ist dies ein konkreter Vorteil der Einrichtung einer solchen Umgebung. Dafür „frieren“ wir die Umgebung in einer Beschreibungsdatei ein. Es ist Usus, diese Datei, in der die Eigenschaften einer jeweiligen Umgebung gesichert werden, „requirements.txt“ zu nennen.
Mit der Ausführung des Befehls
pip freeze > requirements.txt
im Terminal von VS Code erhalten wir – wie erwartet – eine Datei namens „requirements.txt“ in unserem Verzeichnis, in die wir problemlos hineinschauen können. Darin sind die Module in ihrer jeweiligen Version aufgelistet.
Möchten wir auf einem anderen Rechner unsere auf diese Weise „eingefrorene“ Umgebung wieder auftauen, tun wir das mit folgender Zeile im Terminal:
pip install -r requirements.txt
Und in Zukunft?
Arbeiten wir an unserem Projekt weiter, so werden wir wahrscheinlich auch weitere Module hinzufügen. Damit diese Module zukünftig ebenfalls auf anderen Rechnern zur Verfügung stehen, wiederholen wir nach der Installation eines Moduls einfach das Einfrieren aller Module in die requirements-Datei:
pip freeze > requirements.txt
Auf diese Weise halten wir die Datei immer auf dem neuesten Stand.
Wenn venv nicht mehr reicht
Anwenderinnen und Anwender, die über das hier gezeigte Verhalten hinausgehende Bedürfnisse haben, die ihrer komplexen Projektstruktur und unterschiedlichen Abhängigkeiten geschuldet sind, sollten sich das Modul pipenv ansehen. Dieses bietet weitergehende Konfigurationsmöglichkeiten als venv.
Du muss angemeldet sein, um einen Kommentar zu veröffentlichen.