Erste Schritte mit virtuellen Umgebungen in Python

Dieser Artikel erklärt, wie Sie virtuelle Umgebungen in Python sowohl unter Windows als auch unter Linux einrichten und nutzen können.

Bei der Arbeit an mehreren Projekten in Ihrer lokalen Entwicklungsumgebung treten oft Konflikte durch unterschiedliche Anforderungen an Bibliotheken auf. Durch die Nutzung virtueller Umgebungen für jedes Ihrer Projekte können Sie diese Abhängigkeiten besser organisieren.

Um die Vorteile virtueller Umgebungen in Python voll auszuschöpfen, werden wir uns nun ansehen, wie man diese erstellt und aktiviert. 👩🏽‍💻

Was sind virtuelle Umgebungen?

Virtuelle Umgebungen sind voneinander getrennte, abgeschlossene Bereiche, die den Code und die notwendigen Bibliotheken eines Projekts enthalten.

Aber warum sollte man überhaupt virtuelle Umgebungen verwenden?

Ganz einfach: Sie erlauben es, unterschiedliche Versionen derselben Bibliotheken für verschiedene Projekte zu installieren und zu verwenden. Dadurch wird verhindert, dass Änderungen in einer Bibliothek unerwünschte Auswirkungen auf andere Projekte haben. Lassen Sie uns das genauer betrachten.

Installation von Paketen in Python

Die Standardbibliothek von Python umfasst eine Vielzahl nützlicher Module für Unit-Tests, die Interaktion mit dem Betriebssystem, den Umgang mit Datums- und Zeitangaben und vieles mehr.

Für viele Python-Projekte ist es jedoch notwendig, zusätzliche Pakete zu verwenden, die von der Python-Community entwickelt wurden. Dies gilt besonders für Anwendungen wie Web Scraping zur Datengewinnung, maschinelles Lernen und Webanwendungen.

Zur Installation und Verwaltung dieser Pakete können Sie Werkzeuge wie Conda oder pip verwenden.

Jedes Projekt benötigt eine spezifische Auswahl an Paketen. Wenn Sie jedoch alle Pakete direkt in Ihrer globalen Entwicklungsumgebung installieren, teilen sich alle Projekte die selben Pakete.

Wo liegt das Problem?

Angenommen, Sie haben eine Vielzahl von Paketen in Ihrer Entwicklungsumgebung. Ihr aktuelles Projekt benötigt aber vielleicht nur drei davon. Wenn alle Projekte die gleichen globalen Installationen nutzen, wird es sehr schwierig zu ermitteln, welche Pakete ein bestimmtes Projekt tatsächlich benötigt – die sogenannten Abhängigkeiten des Projekts.

Ein weiterer Nachteil: Stellen Sie sich vor, Sie haben ein Projekt, das Django 2.2 verwendet. Nun beginnen Sie mit einem Projekt, das Django 4 benötigt. Sie installieren also die neueste Django-Version in Ihrer Entwicklungsumgebung.

Was geschieht mit der bestehenden Installation?

Die bisherige Version wird entfernt und durch die neue Version ersetzt. Bei neueren Versionen können Funktionen veraltet sein, und Ihre alten Django-Projekte laufen dann möglicherweise nicht mehr wie erwartet.

Kurz gesagt: Das Abhängigkeitsmanagement wird schwierig, wenn Pakete in einer einzigen gemeinsamen Umgebung installiert sind, da jedes Projekt seine eigenen Bibliotheken zur Ausführung benötigt.

Wie virtuelle Umgebungen funktionieren

Wir haben nun die Probleme gesehen, die mit global installierten Paketen einhergehen. Dies zeigt, wie wichtig virtuelle Umgebungen sind.

Wenn Sie eine virtuelle Umgebung für Ihre Python-Projekte erstellen und aktivieren, installieren Sie nur die Pakete, die für dieses spezielle Projekt benötigt werden.

Im Bezug auf das Django-Beispiel können Sie mit virtuellen Umgebungen sowohl Django 2.2- als auch Django 4-Projekte gleichzeitig ausführen, ohne Konflikte. Die Django-Installationen sind nicht mehr systemweit, sondern auf die jeweiligen virtuellen Umgebungen des Projekts beschränkt.

Zusammengefasst: Virtuelle Umgebungen sind abgeschottete Bereiche, die den Code und die Bibliotheken für ein einzelnes Projekt enthalten.

Vorteile virtueller Umgebungen

Nachdem wir die Funktionsweise virtueller Umgebungen kennengelernt haben, fassen wir die Vorteile ihrer Verwendung zusammen:

  • Virtuelle Umgebungen bieten eine isolierte Entwicklungsumgebung für jedes einzelne Projekt. Damit lassen sich nur die Pakete installieren, die für das jeweilige Projekt benötigt werden.
  • Da virtuelle Umgebungen isoliert sind, können verschiedene Projekte unterschiedliche Versionen der gleichen Bibliothek nutzen. Mit virtuellen Umgebungen müssen Sie sich auch keine Sorgen über Systemberechtigungen machen, um Bibliotheken zu installieren.
  • Nachdem Sie Pakete in einer virtuellen Umgebung installiert haben, können Sie die Abhängigkeiten des Projekts in einer Datei namens „requirements.txt“ erfassen. Dies ermöglicht anderen Entwicklern, die Projektumgebung nachzubilden und die benötigten Pakete mit einem einzigen Befehl zu installieren.

Nachdem wir nun die Funktion und Vorteile virtueller Umgebungen kennen, wollen wir einige der beliebtesten Werkzeuge ansehen, mit denen Sie diese erstellen und verwalten können.

#1. Virtualenv

Virtualenv ist ein weitverbreitetes Werkzeug zur Erstellung und Verwaltung von virtuellen Umgebungen für Python-Projekte. Ein Teil der Funktionalität von virtualenv ist im venv-Paket enthalten. Virtualenv ist jedoch schneller und flexibler als venv.

#2. Pipenv

Pipenv vereint die Funktionen der virtuellen Umgebungen von virtualenv mit dem Paketmanagement von pip. Es nutzt verwaltete Pipfiles zur Verwaltung der Projektbibliotheken innerhalb einer virtuellen Umgebung.

Auf diesem Pipenv-Spielplatz können Sie pipenv direkt im Browser ausprobieren.

#3. Conda

Wenn Sie die Anaconda-Distribution von Python für die Entwicklung nutzen, können Sie conda zur Paketverwaltung und zur Erstellung virtueller Umgebungen verwenden.

Weitere Informationen finden Sie in diesem umfassenden Leitfaden zum Verwalten von Umgebungen mit Conda.

#4. Poetry

Poetry ist ein Werkzeug zur Paketverwaltung, mit dem Sie Abhängigkeiten über all Ihre Python-Projekte hinweg verwalten können. Zur Nutzung von Poetry benötigen Sie Python 3.7 oder eine neuere Version.

#5. Venv

Wie bereits erwähnt, bietet venv einen Teil der Funktionen von virtualenv, hat aber den Vorteil, dass es seit Python 3.3 in die Standardbibliothek integriert ist.

Es ist einfach mit jeder Python-Installation verfügbar und erfordert keine separate Installation zusätzlicher Pakete. In diesem Tutorial werden wir venv nutzen, um virtuelle Umgebungen zu erstellen und zu verwalten. ✅

So erstellen Sie eine virtuelle Python-Umgebung in Ubuntu

💬 Um diesem Tutorial folgen zu können, benötigen Sie eine lokale Installation von Python 3. Bitte stellen Sie sicher, dass Python 3.5 oder eine neuere Version installiert ist.

In diesem Abschnitt zeigen wir Ihnen, wie Sie virtuelle Umgebungen auf einem Ubuntu-Linux-Rechner erstellen und aktivieren können. Die gleichen Schritte funktionieren auch auf anderen Linux-Distributionen.

Zur besseren Übersicht erstellen wir ein Projektverzeichnis und wechseln in dieses. Dort erstellen wir die virtuelle Umgebung (venv).

$ mkdir my_project
$ cd my_project

Die grundlegende Syntax zur Erstellung einer virtuellen Umgebung für Ihr Python-Projekt lautet: python3 -m venv <Name oder Pfad der Umgebung>. Dieser Befehl erstellt im aktuellen Arbeitsverzeichnis eine virtuelle Umgebung namens ‚my_env‘:

$ python3 -m venv my_env

Aktivieren und Installieren von Paketen in einer virtuellen Umgebung

Nachdem Sie die virtuelle Umgebung erstellt haben, können Sie diese aktivieren und die benötigten Pakete darin installieren. Um die virtuelle Umgebung zu aktivieren, führen Sie den folgenden Befehl aus:

$ source my_env/bin/activate

Nach Aktivierung der virtuellen Umgebung können Sie den Befehl pip list ausführen, um die Liste der installierten Pakete zu erhalten:

$ pip list

Da Sie noch keine Pakete installiert haben, sehen Sie nur ’setuptools‘ und ‚pip‘, die in jeder neu erstellten virtuellen Umgebung standardmäßig vorhanden sind.

Durch die Installation von pip in der virtuellen Umgebung können Sie projektspezifische Pakete installieren. So wird sichergestellt, dass jedes Projekt eine eigene, unabhängige Umgebung hat.

Nach der Aktivierung der virtuellen Umgebung können Sie projektspezifische Pakete mit pip installieren. Installieren wir zum Beispiel ‚requests‘, ein häufig genutztes Python-Paket, das Funktionen zum Senden von HTTP-Anfragen zur Arbeit mit Web-APIs bereitstellt:

$ pip install requests

Wenn Sie die requests-Bibliothek installieren, werden auch alle Pakete installiert, die von dieser Bibliothek benötigt werden.

$ pip list

Sie können den Befehl pip freeze verwenden und die Ausgabe in eine requirements.txt-Datei umleiten, wie hier gezeigt:

$ pip freeze > requirements.txt

Wenn Sie den Inhalt des aktuellen Projektverzeichnisses untersuchen, werden Sie sehen, dass die requirements.txt-Datei erstellt wurde.

$ ls
# my_env requirements.txt

Sie können die virtuelle Umgebung nach der Arbeit an einem Projekt mit dem folgenden Befehl wieder deaktivieren:

$ deactivate

So erstellen Sie eine virtuelle Python-Umgebung unter Windows

Generell wird eine Linux-Umgebung für die Entwicklung bevorzugt. Wenn Sie aber unter Windows arbeiten, können Sie das Windows Subsystem für Linux (WSL) verwenden, um eine Ubuntu-Terminalumgebung für die lokale Entwicklung einzurichten.

Wenn Sie Windows verwenden, können Sie entweder die Windows PowerShell oder die Eingabeaufforderung verwenden und virtuelle Umgebungen mit diesem Befehl erstellen:

> python -m venv <Pfad zur virtuellen Umgebung>

Aktivieren einer virtuellen Umgebung

Die Aktivierung einer virtuellen Umgebung unter Windows unterscheidet sich je nachdem, ob Sie die Eingabeaufforderung oder die Windows PowerShell verwenden.

Führen Sie in der Eingabeaufforderung diesen Befehl aus, um die virtuelle Umgebung zu aktivieren:

> <Pfad zur virtuellen Umgebung>\Scripts\activate.bat

Alternativ können Sie die virtuelle Umgebung in der Windows PowerShell mit diesem Befehl aktivieren:

> <Pfad zur virtuellen Umgebung>\Scripts\Activate.ps1

Sie können dann alle benötigten Pakete in der virtuellen Umgebung installieren.

Um virtuelle Umgebungen zu deaktivieren, können Sie den Befehl deactivate sowohl in der Eingabeaufforderung als auch in der Windows PowerShell verwenden.

Fazit

In diesem Artikel haben wir die Einschränkungen systemweiter Installationen und deren Auswirkungen auf das Abhängigkeitsmanagement besprochen. Virtuelle Umgebungen in Python bieten eine Lösung zur besseren Verwaltung von Abhängigkeiten und ermöglichen eine isolierte Entwicklungsumgebung für jedes Projekt.

Von den verschiedenen Tools zur Erstellung und Verwaltung virtueller Umgebungen haben Sie gelernt, wie man venv verwendet, das in die Python-Standardbibliothek integriert ist. Sie können virtuelle Umgebungen damit einfach erstellen und aktivieren.

Innerhalb der eigenen virtuellen Umgebung eines Projekts können projektspezifische Versionen von Bibliotheken installiert werden. Diese Abhängigkeiten lassen sich in einer requirements.txt-Datei erfassen, wodurch andere Entwickler die Projektumgebung einfach nachbilden können.

Verwenden Sie virtuelle Umgebungen, wenn Sie Ihr nächstes Python-Projekt starten, um das Abhängigkeitsmanagement zu vereinfachen. Viel Spaß beim Programmieren! 🎉