Virtualenv und venv: Erklärte virtuelle Python-Umgebungen

Von allen Gründen, warum Python bei Entwicklern sehr beliebt ist, ist einer der größten die breite und ständig wachsende Auswahl an Paketen von Drittanbietern. Praktische Toolkits für alles, von der Aufnahme und Formatierung von Daten bis hin zu Hochgeschwindigkeits-Mathematik und maschinellem Lernen, sind nur ein importoder mehrere Schritte pip installentfernt.

Aber was passiert, wenn diese Pakete nicht gut miteinander spielen? Was tun Sie, wenn verschiedene Python-Projekte konkurrierende oder inkompatible Versionen derselben Add-Ons benötigen? Hier kommen virtuelle Python-Umgebungen ins Spiel.

Sie können virtuelle Umgebungen sowohl in Python 2 als auch in Python 3 erstellen und damit arbeiten, obwohl die Tools unterschiedlich sind. Virtualenv ist das Werkzeug der Wahl für Python 2, während venv die Aufgabe in Python 3 übernimmt. 

Was sind virtuelle Python-Umgebungen?

In einer virtuellen Umgebung können mehrere parallele Instanzen des Python-Interpreters mit jeweils unterschiedlichen Paketsätzen und Konfigurationen verwendet werden. Jede virtuelle Umgebung enthält eine diskrete Kopie des Python-Interpreters, einschließlich Kopien seiner Support-Dienstprogramme.

Die in jeder virtuellen Umgebung installierten Pakete werden nur in dieser virtuellen Umgebung und in keiner anderen angezeigt. Selbst große, komplexe Pakete mit plattformabhängigen Binärdateien können in virtuellen Umgebungen voneinander getrennt werden.

Es gibt einige häufige Anwendungsfälle für eine virtuelle Umgebung:

  1. Sie entwickeln mehrere Projekte, die von verschiedenen Versionen derselben Pakete abhängen, oder Sie haben ein Projekt, das aufgrund einer Namespace-Kollision von bestimmten Paketen isoliert werden muss. Dies ist der Standardanwendungsfall.
  2. Sie arbeiten in einer Python-Umgebung, in der Sie das Site-Packages-Verzeichnis nicht ändern können. Dies kann daran liegen, dass Sie in einer stark kontrollierten Umgebung wie Managed Hosting oder auf einem Server arbeiten, auf dem die Auswahl des Interpreters (oder der darin verwendeten Pakete) aufgrund der Produktionsanforderungen nicht geändert werden kann.
  3. Sie möchten unter stark kontrollierten Umständen mit einer bestimmten Kombination von Paketen experimentieren, um beispielsweise die Kreuzkompatibilität oder die Abwärtskompatibilität zu testen.
  4. Sie möchten eine Basisversion des Python-Interpreters auf einem System ohne Pakete von Drittanbietern ausführen und nur bei Bedarf Pakete von Drittanbietern für jedes einzelne Projekt installieren.

Nichts sagt, dass Sie eine Python-Bibliothek nicht einfach in einen Unterordner eines Projekts entpacken und auf diese Weise verwenden können. Ebenso können Sie eine eigenständige Kopie des Python-Interpreters herunterladen, in einen Ordner entpacken und damit Skripte und Pakete ausführen, die ihm gewidmet sind.

Die Verwaltung solcher Projekte mit Kopfsteinpflaster wird jedoch bald schwierig. Das scheint zunächst nur einfacher zu sein. Das Arbeiten mit Paketen, die binäre Komponenten enthalten oder auf aufwändigen Abhängigkeiten von Drittanbietern beruhen, kann ein Albtraum sein. Die beste langfristige Lösung besteht darin, die nativen Python-Mechanismen zum Erstellen und Arbeiten mit virtuellen Umgebungen zu verwenden.

Virtuelle Umgebungen in Python 3

Virtualenv hat sich für unzählige Python-Entwickler als unverzichtbar erwiesen, ist jedoch nicht Teil der Standardbibliothek von Python. Python 3 verfügt über native Tools für virtuelle Umgebungen, die den gesamten Prozess recht einfach machen.

Zugehöriges Video: Wie Python die Programmierung erleichtert

Python ist perfekt für die IT geeignet und vereinfacht viele Arten von Arbeiten, von der Systemautomatisierung bis hin zur Arbeit in hochmodernen Bereichen wie maschinellem Lernen.

Erstellen Sie die virtuelle Umgebung

Geben Sie Folgendes ein, um eine virtuelle Umgebung in einem bestimmten Verzeichnis zu erstellen:

python3 -m venv /path/to/directory

(Beachten Sie, dass Sie nur verwenden können,  pythonanstatt, python3wenn Ihr System pythonals Standard-Python 3-Interpreter erkennt .)

Der gesamte Vorgang zum Einrichten der virtuellen Umgebung kann ein oder zwei Minuten dauern. Wenn es fertig ist, sollten Sie ein Verzeichnis mit einigen Unterverzeichnissen haben. Das wichtigste Unterverzeichnis befindet sich  binunter Unix oder  ScriptsWindows. Dort finden Sie die Kopie des Python-Interpreters für die virtuelle Umgebung sowie die Dienstprogramme.

Beachten Sie, dass jede virtuelle Umgebung eine eigene Kopie des Python-Interpreters enthalten kann und daher ziemlich groß sein kann. Unter Windows und Linux belegt eine virtuelle Python 3.6-Umgebung etwa 23 MB Speicherplatz.

Aktivieren Sie die virtuelle Umgebung

Bevor Sie diese virtuelle Umgebung verwenden können, müssen Sie sie explizit aktivieren . Durch die Aktivierung wird die virtuelle Umgebung zum Standard-Python-Interpreter für die Dauer der Sitzung.

Sie müssen unterschiedliche Syntax zum Aktivieren der virtuellen Umgebung verwenden, je nachdem, welches Betriebssystem und welche Befehlsshell Sie verwenden.

  • Verwenden Sie unter Unix oder MacOS die Bash-Shell: source /path/to/venv/bin/activate
  • Verwenden Sie unter Unix oder MacOS die csh-Shell: source /path/to/venv/bin/activate.csh
  • Unter Unix oder MacOS mit der Fischschale: source /path/to/venv/bin/activate.fish
  • Unter Windows mit der Eingabeaufforderung:path\to\venv\Scripts\activate.bat
  • Unter Windows mit PowerShell: path\to\venv\Scripts\Activate.ps1

Beachten Sie, dass die aktivierte Umgebung nur für den Kontext funktioniert, in dem sie aktiviert wurde . Wenn Sie beispielsweise zwei Instanzen von PowerShell, A und B, starten und die virtuelle Umgebung nur in Instanz A aktivieren, gilt diese Umgebung nur für A. Sie würde nirgendwo anders gelten.

Konfigurieren und verwenden Sie die virtuelle Umgebung

Sobald Sie die neue virtuelle Umgebung aktiviert haben, können Sie mit dem Pip-Paketmanager Pakete hinzufügen und ändern. Sie finden pip im ScriptsUnterverzeichnis der virtuellen Umgebung unter Windows und im binUnterverzeichnis unter Unix-Betriebssystemen.

Wenn Sie bereits mit der Funktionsweise von Pip vertraut sind, sind Sie bereit. In einer virtuellen Umgebung sollte es genauso sein. Stellen Sie einfach sicher, dass Sie die Instanz von pip verwenden, die Pakete für die virtuelle Umgebung in dem Kontext verwaltet, in dem sie aktiviert wurde, z. B. die Bash-Sitzung oder die Windows CLI / PowerShell-Sitzung. Wenn Sie überprüfen möchten, ob Sie den richtigen Pip und die richtige virtuelle Umgebung verwenden, geben Sie ein pip -Vund überprüfen Sie, ob der angezeigte Pfad auf ein Unterverzeichnis Ihrer virtuellen Umgebung verweist.

Um die von Ihnen erstellte virtuelle Umgebung zum Ausführen von Python-Skripten zu verwenden, rufen Sie Python einfach über die Befehlszeile in dem Kontext auf, in dem Sie es aktiviert haben.

Deaktivieren der virtuellen Umgebung

Wenn Sie mit der virtuellen Umgebung fertig sind, können Sie die Sitzung, in der Sie sie verwendet haben, einfach beenden. Wenn Sie weiterhin in der Umgebung arbeiten möchten, aber stattdessen den Standard-Python-Interpreter verwenden möchten, geben Sie deactivatean der Eingabeaufforderung ein. Windows-Benutzer an der Eingabeaufforderung müssen über deactivate.batdas ScriptsUnterverzeichnis ausgeführt werden. Unix-Benutzer und Windows-Benutzer, die PowerShell ausführen , können jedoch einfach deactivateein beliebiges Verzeichnis eingeben .

Entfernen der virtuellen Umgebung

Virtuelle Umgebungen sind in sich geschlossen. Wenn Sie die virtuelle Umgebung nicht mehr benötigen, können Sie einfach das Verzeichnis löschen.

Virtuelle Umgebungen in Python 2

Mit Python 2 sind virtuelle Umgebungen keine native Funktion der Sprache. Stattdessen müssen Sie Bibliotheken von Drittanbietern installieren, um virtuelle Umgebungen zu erstellen und zu verwalten.

Das beliebteste und am weitesten verbreitete dieser Projekte ist virtualenv, bei dem die Verzeichnisstruktur erstellt und die erforderlichen Dateien in eine virtuelle Umgebung kopiert werden. Um virtualenv zu installieren, verwenden Sie einfach pip install virtualenv. Geben Sie ein, um ein virtuelles Umgebungsverzeichnis damit zu erstellen virtualenv /path/to/directory. Das Aktivieren und Deaktivieren der virtuellen Umgebung funktioniert genauso wie für virtuelle Umgebungen in Python 3 (siehe oben).

Verwenden virtueller Umgebungen mit Jupyter-Notebooks

Wenn Sie Jupyter-Notebooks (auch bekannt als IPython-Notebooks) verwenden und Jupyter bereits systemweit installiert haben, erstellen Sie Ihre virtuelle Umgebung und aktivieren Sie sie. Führen Sie dann pip install ipykernelin Ihrem virtuellen Umgebungsverzeichnis aus, um die erforderlichen Komponenten für IPython hinzuzufügen. Führen Sie ipython kernel install —user —name=abschließend aus, wobei Projektname ein Name ist, den Sie diesem bestimmten Projekt zuordnen möchten. Von dort aus sollten Sie Jupyter starten und zu dem IPython-Kernel wechseln können, den Sie in der virtuellen Umgebung installiert haben.