Was ist eine virtuelle Umgebung und wozu braucht man die?

Code

Was anfangs eher wie eine zusätzliche Hürde und Zeitverschwendung anmutet, erweist sich im Nachhinein oftmals als Geniestreich: Die Einrichtung einer virtuellen Umgebung in Python. Klären wir zu Beginn einmal, was das ist, wofür man es braucht und warum eine virtuelle Umgebung wichtig bei der Versionskontrolle ist.

Was ist eine virtuelle Umgebung?

Eine virtuelle Umgebung in Python ist ein Schnappschuss deiner aktuellen Python-Umgebung. Dazu gehören die verwendete Python-Version und die in der virtuellen Umgebung installierten Module. Mithilfe der virtuellen Umgebung lassen sich die vielfältigen Modul-Abhängigkeiten innerhalb eines Projekts recht übersichtlich verwalten.

Wozu braucht man eine virtuelle Umgebung?

Virtuelle Umgebungen bieten eine Reihe von Vorteilen:

  • Du kannst ohne Administrationsrechte Python-Module auf dem Rechner installieren.
  • Du hältst die benötigten Module für deine einzelnen Projekte voneinander getrennt.
  • Deine jeweiligen Projekte sind unabhängig von einem bestimmten Rechner und lassen sich problemlos auch auf anderen Computern wiederherstellen.
  • Du kannst das gleiche Modul in unterschiedlichen Versionen in verschiedenen Projekten verwenden.

Auch wenn das für einen einzelnen Entwickler mit Administrationsrechte an seinem eigenen Computer zunächst etwas übertrieben erscheinen mag, lohnt es sich für jede ernsthafte Entwicklerin und jeden ernsthaften Entwickler, sich die Zeit zu nehmen und das Konzept hinter der virtuellen Umgebung zu lernen.

Welche Rolle spielt die virtuelle Umgebung beim Umgang mit dem Versionskontrollsystem?

Die virtuelle Umgebung lässt man beim Einchecken des Codes in ein Repository weg. Es gibt immer wieder Diskussionen, in denen für das Einchecken argumentiert wird, dass beispielsweise das gesamte Projekt im Repository sofort produktiv verfügbar ist, ohne weitere Konfigurationsschritte ausführen zu müssen. Das stimmt zwar, aber es ist naiv zu vermuten, dass jedes System, auf dem der Code ausgecheckt wird, gleich ist oder gleich konfiguriert wurde. Ein simpler Fall, bei dem das Projekt samt virtueller Umgebung auf dem Mac ein- wird und später unter Windows ausgecheckt wird, führt zu unnötigen Aufwänden aufgrund unterschiedlicher Pfadangaben. Ein weiterer recht klarer Fall wäre ein Projekt auf einem 32-Bit-Windows, das auf einem 64-Bit-Windows ausgecheckt wird, was ebenfalls zu völlig überflüssigen Anpassungsschwierigkeiten führt. Diese möglichen Kopfschmerzen sollte man sich ersparen.

Es überwiegen die Argumente gegen das Aufnehmen der virtuellen Umgebung in die Versionskontrolle. Schließlich lässt sich der Stand einer jeweiligen virtuellen Umgebung mithilfe der requirements-Datei sehr einfach wiederherstellen – mit den großen Vorteilen die für das jeweilige System passenden Pfade und Module automatisch zu erhalten. Wie du ganz konkret in der Praxis eine virtuelle Umgebung in Python einrichtest und sicherst, ist das Thema im nächsten Post.

Photo by Luca Bravo on Unsplash