In diesem Artikel erfahren Sie, wie Sie mit virtuellen Umgebungen in Python sowohl unter Windows als auch unter Linux arbeiten können.

Wenn Sie mit der Arbeit an mehreren Projekten in Ihrer lokalen Entwicklungsumgebung beginnen, stoßen Sie oft auf Probleme mit Abhängigkeiten. Die Erstellung virtueller Umgebungen für jedes Ihrer Projekte kann Ihnen helfen, Abhängigkeiten und Projektanforderungen besser zu verwalten.

Um die Vorteile von virtuellen Umgebungen in Python zu nutzen, lernen wir, wie man virtuelle Umgebungen erstellt und aktiviert. 👩🏽‍💻

Was sind virtuelle Umgebungen?

Virtuelle Umgebungen sind isolierte und unabhängige Umgebungen, die den Code und die Abhängigkeiten eines Projekts enthalten.

Aber warum sollten Sie virtuelle Umgebungen verwenden?

Nun, virtuelle Umgebungen ermöglichen es Ihnen, verschiedene Versionen der gleichen Bibliotheken für verschiedene Projekte zu installieren und zu verwenden. Die Verwendung virtueller Umgebungen stellt außerdem sicher, dass es keine Änderungen gibt, wenn zwei oder mehr Projekte unterschiedliche Versionen verwenden. Lassen Sie uns dies im Detail verstehen.

Installieren von Paketen in Python

Die Python-Standardbibliothek wird mit mehreren nützlichen Modulen für Unit-Tests, die Interaktion mit dem Betriebssystem, die Arbeit mit Datums- und Zeitangaben und vieles mehr geliefert.

Bei der Arbeit an Python-Projekten müssen Sie jedoch häufig weitere Pakete installieren, die von der Python-Community entwickelt wurden. Dies gilt insbesondere für Anwendungen wie Web Scraping zur Datensammlung, maschinelles Lernen und Webanwendungen.

Um diese Pakete zu installieren und zu verwalten, können Sie conda oder pip verwenden.

Jedes Projekt erfordert eine bestimmte Anzahl von Paketen, die Sie installieren müssen. Wenn Sie jedoch alle Pakete in Ihrer Entwicklungsumgebung auf Ihrem lokalen Rechner installieren, nutzen alle Projekte die global installierten Pakete gemeinsam.

local-dev-env

Warum ist das also ein Problem?

Nun, Sie haben vielleicht N Pakete in Ihrer Entwicklungsumgebung. Das Projekt, an dem Sie gerade arbeiten, benötigt aber vielleicht nur 3 davon. Wenn alle Ihre Projekte gemeinsame Installationen haben, ist es sehr schwierig zu erkennen, welches der Projekte welche der installierten Pakete benötigt – die Abhängigkeiten, die mit jedem Projekt verbunden sind.

Es gibt eine weitere Einschränkung bei diesem Ansatz. Angenommen, Sie haben ein Django 2.2 Projekt in Ihrer Projektbibliothek. Sie beschließen, an einem Projekt zu arbeiten, das Django 4 verwendet. Sie installieren also die neueste Version von Django in derselben Entwicklungsumgebung.

Was passiert mit der bestehenden Installation?

Sie wird entfernt und durch die von Ihnen installierte Version von Django ersetzt. Bei neueren stabilen Versionen sind bestimmte Funktionen möglicherweise veraltet. Und Ihre früheren Django-Projekte funktionieren möglicherweise nicht mehr wie erwartet.

version-diff

Zusammenfassend lässt sich sagen, dass die Verwaltung von Abhängigkeiten schwierig wird, wenn die Pakete alle in einer gemeinsamen Umgebung installiert sind, da die Projekte ihre eigenen Bibliotheken benötigen, um ausgeführt werden zu können.

Wie virtuelle Umgebungen funktionieren

Bis jetzt haben wir die Herausforderungen gesehen, die mit der Installation von Paketen in einer globalen Entwicklungsumgebung (systemweite Installationen) verbunden sind. Dies motiviert uns zu verstehen, wie virtuelle Umgebungen diese Einschränkung umgehen.

Wenn Sie eine virtuelle Umgebung für Ihre Python-Projekte erstellen und aktivieren, können Sie nur die Pakete installieren, die für das aktuelle Projekt erforderlich sind.

python-virtual-environments

Um auf das Beispiel der Django-Projekte zurückzukommen: Mit virtuellen Umgebungen können Sie sowohl Django 2.2- als auch Django 4-Projekte laufen lassen – ohne dass es zu Konflikten kommt. Das liegt daran, dass die Django-Installationen keine systemweiten Installationen mehr sind, sondern sich auf die virtuellen Umgebungen der jeweiligen Projekte beschränken.

Kurz gesagt: Virtuelle Umgebungen sind isolierte Umgebungen, die sowohl den Code als auch die Abhängigkeiten für ein Projekt enthalten.

Vorteile von virtuellen Umgebungen

Advantages-of-Virtual-Environments

Nachdem Sie nun gelernt haben, wie virtuelle Umgebungen in Python funktionieren, lassen Sie uns nun die Vorteile ihrer Verwendung aufzählen:

  • Virtuelle Umgebungen bieten eine isolierte Entwicklungsumgebung für einzelne Projekte, die es uns ermöglicht, nur die Pakete zu installieren, die wir für das jeweilige Projekt benötigen.
  • Da die virtuellen Umgebungen von Projekten sowohl unabhängig als auch isoliert sind, können verschiedene Projekte unterschiedliche Versionen derselben Bibliothek verwenden – je nach den Anforderungen. Mit virtuellen Umgebungen müssen Sie sich nicht um Systemberechtigungen kümmern, um Bibliotheken zu installieren und die Entwicklungsumgebung einzurichten.
  • Sobald Sie die Pakete in einer virtuellen Umgebung installiert haben, können Sie die Abhängigkeiten des Projekts in einer requirements.txt-Datei festhalten. So können andere Entwickler die Entwicklung und die Umgebung des Projekts replizieren und die erforderlichen Pakete mit einem einzigen Befehl installieren.

Tools zur Erstellung virtueller Umgebungen

Tools-to-Create-Virtual-Environments

Bis jetzt haben Sie gelernt, wie virtuelle Umgebungen funktionieren und welche Vorteile sie haben. Sehen wir uns nun einige beliebte Tools an, die Sie zum Erstellen und Verwalten virtueller Umgebungen in Python verwenden können.

#1. Virtualenv

Virtualenv ist eines der am häufigsten verwendeten Tools zur Erstellung und Verwaltung virtueller Umgebungen für Python-Projekte. Eine Teilmenge der Funktionalität von virtualenv ist im venv-Paket verfügbar. Allerdings ist das Paket virtualenv im Vergleich zu venv schneller und erweiterbar.

#2. Pipenv

Mit pipnev verfügen Sie sowohl über die Funktionen der virtuellen Umgebung von virtualenv als auch über die Paketverwaltungsfunktionen von pip. Es verwendet die Verwaltung von pipfiles, um Projektabhängigkeiten innerhalb einer virtuellen Umgebung zu verwalten.

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

#3. Conda

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

Wenn Sie mehr darüber erfahren möchten, lesen Sie diesen umfassenden Leitfaden zur Verwaltung von Umgebungen mit conda.

#4. Poetry

Poetry ist ein Paketmanagement-Tool, mit dem Sie Abhängigkeiten in allen Python-Projekten verwalten können. Um Poetry verwenden zu können, müssen Sie Python 3.7 oder eine neuere Version installiert haben.

#5. Venv

Wie bereits erwähnt, bietet venv eine Teilmenge der Funktionalität von virtualenv, allerdings mit dem Vorteil, dass es ab Python 3.3 in die Python-Standardbibliothek integriert ist.

Es ist mit der Python-Installation sofort verfügbar und erfordert keine Installation externer Pakete. Wir werden es in diesem Lernprogramm verwenden, um virtuelle Umgebungen zu erstellen und mit ihnen zu arbeiten. ✅

Wie man eine virtuelle Python-Umgebung in Ubuntu erstellt

💬 Um dem Rest dieses Tutorials folgen zu können, müssen Sie eine lokale Installation von Python 3 haben. Stellen Sie sicher, dass Sie Python 3.5 oder eine neuere Version verwenden.

In diesem Abschnitt werden die Schritte zum Erstellen und Aktivieren virtueller Umgebungen auf einem Ubuntu-Linux-Rechner beschrieben. Die gleichen Schritte können auch auf anderen Linux-Distributionen angewendet werden.

Um die Verwaltung zu vereinfachen, erstellen wir ein Projektverzeichnis und wechseln mit cd in dieses Verzeichnis.

$ mkdir my_project
$ cd mein_projekt

Die allgemeine Syntax zur Erstellung einer virtuellen Umgebung für Ihr Python-Projekt lautet python3 -m venv <venv-name-oder-pfad>. Wenn Sie diesen Befehl ausführen, wird eine virtuelle Umgebung namens my_env im aktuellen Arbeitsverzeichnis erstellt:

$ python3 -m venv mein_env

So aktivieren und installieren Sie Pakete in einer virtuellen Umgebung

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

$ source my_env/bin/activate

Sobald Sie eine virtuelle Umgebung aktiviert haben, können Sie den Befehl pip list ausführen, um die Liste der installierten Pakete zu erhalten:

$ pip list
image-3

Bisher haben wir noch keine Pakete installiert. Sie sollten daher in der Lage sein, setuptools und pip - diestandardmäßig installiert sind– in jeder der erstellten virtuellen Umgebungen zu sehen.

Die Installation von pip innerhalb der virtuellen Umgebung ermöglicht es Ihnen, Pakete zu installieren, die für das jeweilige Projekt benötigt werden; deshalb haben Sie für jedes Projekt eine eigene Entwicklungsumgebung.

Nachdem Sie nun die virtuelle Umgebung aktiviert haben, können Sie mit pip projektspezifische Pakete in dieser Umgebung installieren. Lassen Sie uns zum Beispiel Python requests installieren, eines der am häufigsten heruntergeladenen Python-Pakete, das mehrere nützliche Funktionen zum Senden von HTTP-Anfragen für die Arbeit mit Web-APIs bietet.

$ pip install requests

Wenn Sie die requests-Bibliothek installieren, werden Sie feststellen, dass die requests-Bibliothek zusammen mit allen Paketen installiert wird, die für sie erforderlich sind.

install-libraries-in-python-virtual-environment
$ pip list
view-libraries-in-python-virtual-environment

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

$ pip freeze > anforderungen.txt

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

$ ls
# my_env requirements.txt

Sie können die virtuelle Umgebung deaktivieren, nachdem Sie an dem Projekt gearbeitet haben, indem Sie den folgenden Befehl ausführen:

$ deaktivieren

So erstellen Sie eine virtuelle Python-Umgebung unter Windows

Im Allgemeinen wird für die Entwicklung eine Linux-Umgebung bevorzugt. Wenn Sie auf einem Windows-Rechner arbeiten, können Sie das Windows Subsystem für Linux (WSL) verwenden, um eine Ubuntu-Terminalumgebung für die lokale Entwicklung einzurichten.

Wenn Sie auf einem Windows-Rechner arbeiten, können Sie entweder die Windows PowerShell oder die Eingabeaufforderung verwenden und mit dem folgenden Befehl virtuelle Umgebungen erstellen:

> python -m venv <pfad-zu-venv&gt

So aktivieren Sie eine virtuelle Umgebung

Die Aktivierung virtueller Umgebungen auf einem Windows-Rechner unterscheidet sich je nachdem, ob Sie in der Eingabeaufforderung oder in der Windows PowerShell arbeiten.

Wenn Sie sich in der Eingabeaufforderung befinden, führen Sie den folgenden Befehl aus, um die virtuelle Umgebung zu aktivieren:

<Pfad-zu-Venue> <Scripts>aktivieren.bat

Wenn Sie die Windows PowerShell verwenden, können Sie auch diesen Befehl ausführen, um die virtuelle Umgebung zu aktivieren:

> <Pfad-zu-Venv>\Scripts\Activate.ps1

Sie können alle erforderlichen Pakete innerhalb der virtuellen Umgebung installieren.

Um virtuelle Umgebungen zu deaktivieren, können Sie den Befehl deaktivieren ausführen – sowohl in der Eingabeaufforderung als auch in Windows PowerShell.

Fazit

In diesem Artikel haben wir die Einschränkungen systemweiter Installationen erörtert und wie sie die Verwaltung von Abhängigkeiten zwischen Python-Projekten erschweren. Virtuelle Umgebungen in Python bieten eine Möglichkeit, Abhängigkeiten besser zu verwalten und gleichzeitig eine isolierte Entwicklungsumgebung für einzelne Projekte zu schaffen.

Unter den weit verbreiteten Werkzeugen zum Erstellen und Verwalten virtueller Umgebungen in Python haben Sie gelernt, wie man venv verwendet, das in die Python-Standardbibliothek integriert ist, um virtuelle Umgebungen zu erstellen und zu aktivieren.

Innerhalb der dedizierten virtuellen Umgebung eines Projekts können projektspezifische Bibliotheksversionen installiert werden. Diese Anforderungen können dann in einer Datei requirements.txt festgehalten werden, so dass andere Entwickler die Projektumgebung leicht nachbilden können.

Wenn Sie Ihr nächstes Python-Projekt beginnen, sollten Sie unbedingt virtuelle Umgebungen für eine bessere Verwaltung der Abhängigkeiten verwenden. Viel Spaß beim Programmieren!🎉