Eine virtuelle Umgebung für Python erstellen

Aktualisiert am 24. Januar 2021

Eine virtuelle Python-Umgebung kann auf unterschiedliche Weise erzeugt werden. In diesem Artikel stelle ich die Vorgehensweise mit virtualenv und venv vor. Außerdem zeige ich, wie sie in Sublime Text und Visual Studio Code genutzt bzw. aktiviert werden.

Zunächst aber zur Frage, wofür eine virtuelle Umgebung gut ist. Wenn man an unterschiedlichen Projekten arbeitet, die unterschiedliche Python-Versionen benötigen oder für die Abhängigkeiten unterschiedlicher Versionen erforderlich sind, dann macht es Sinn eine Möglichkeit zu haben, diese Projekte voneinander zu separieren. Mit virtuellen Umgebungen wird genau dies realisiert.

Nachfolgend werden zwei Wege vorgestellt: virtualenv und env

Das Modul virtualenv

Vor Python 3.4 sowie in Python 2.x musste dieses Modul verwendet werden, da das Erstellen einer virtuellen Umgebung nicht nativ implementiert war. Das Modul muss mit pip (Windows) oder pip3 (Linux/macOS) installiert werden:

$ pip install virtualenv

Als nächstes erstellt man ein Projektverzeichnis:

$ mkdir <Projektverzeichnis>
$ cd <Projektverzeichnis>

In diesem Verzeichnis wird dann die virtuelle Umgebung erzeugt:

$ virtualenv venv

Dadurch wird das Verzeichnis „venv“ erstellt, in dem sich alle erforderlichen Python-Dateien befinden. Dazu gehört auch eine Version des pip-Moduls, so dass man zusätzlich weitere – nur für dieses Projekt genutzte – Module hinzufügen kann.

Das ich hier als Verzeichnisname „venv“ gewählt habe, ist eine Konvention. Man könnte auch irgendeine andere Bezeichnung wählen.

Über die Option -p <Pfad_zur_Python-Installation> könnte außerdem angegeben werden, welche Python-Version genutzt werden soll. (Sofern unterschiedliche Versionen auf dem System zur Verfügung stehen.)

Es ist auch möglich, auf ein Unterverzeichnis zu verzichten:

$ virtualenv -p python3 .

Der Punkt meint das aktuelle Verzeichnis, so dass in diesem Beispiel eine virtuelle Umgebung unter Verwendung von Python 3 in diesem Verzeichnis erstellt wird.

Um die virtuelle Umgebung nutzen zu können, muss sie aktiviert werden. Sofern kein Unterordner erstellt wurde, erfolgt dies mit:

$ source bin/activate

Falls ein Unterordner mit der Bezeichnung „venv“ angelegt wurde, müsste dementsprechend

$ source venv/bin/activate

eingegeben werden.

Sobald die Aktivierung durchgeführt wurde, kann man etwaige Module mit pip (bzw. pip3) installieren.

Damit ist die Einrichtung der virtuellen Umgebung abgeschlossen. Zum Deaktivieren reicht übrigens die Eingabe des Befehls deactivate aus:

$ deactivate

Das Modul venv

Eine virtuelle Umgebung kann auch mit dem Module venv erzeugt werden, das nur unter Python 3 verfügbar ist. Im Gegensatz zu virtualenv handelt es sich nicht um ein separates Modul. Vielmehr wird es zusammen mit Python 3 ausgeliefert. Eine Installation mit pip3 ist also nicht erforderlich.

Sofern Ihr Python 3 nutzt, solltet Ihr venv den Vorzug geben, da Ihr Euch dadurch einen Installationsschritt (und eine Abhängigkeit von einem separaten Paket) erspart.

Für die Einrichtung einer virtuellen Umgebung mit venv gilt folgende Syntax:

$ python3 -m venv /path/to/new/virtual/environment

Den Namen des Ordners kann auch hier frei gewählt werden. An dieser Stelle möchte ich darauf hinweisen, dass man – unter UNIX-artigen System – auch einen versteckten Ordner anlegen könnte (z.B. „.venv“). Dies ist die empfohlene Vorgehensweise bei der Verwendung von Visual Studio Code. Denn bei Vorhandensein eines versteckten Ordners mit der Bezeichnung „.venv“ erkennt dieser Editor, dass es sich um eine virtuelle Umgebung handelt, die er dann auch automatisch im Editor aktiviert.

$ python3 -m venv .venv

Die virtuelle Umgebung wird anschließend wieder mit activate aktiviert:

$ source .venv/bin/activate

Und die Deaktivierung erfolgt auch hier wieder mit deactivate:

$ deactivate

Virtuelle Umgebungen in einem Code-Editor nutzen

In Sublime Text 3 muss zunächst das Paket Virtualenv mit dem Paketmanager Package Control installiert werden.

Über

> Tools > Build System

kann dann „Python + Virtualenv“ aufgerufen werden. Die Aktivierung der virtuellen Umgebung erfolgt über die Kommandoübersicht (Command Palette), die mit der Tastenkombination

Shift + command + P (macOS)
Shift + Strg + P (Windows)

aufgerufen wird. Hier wählt Ihr dann

Virtualenv: Activate

aus.

Auf dem gleichen Weg erfolgt auch die Deaktivierung:

Virtualenv: Deactivate

Das Paket Virtualenv funktioniert übrigens sowohl mit virtualenv als auch mit venv.

In Visual Studio Code sollte die Python-Erweiterung installiert sein. In der Kommandoübersicht, die auch hier mit der Tastenkombination Shift + command + P (macOS) bzw. Shift + Strg + P (Windows) aufgerufen werden kann, wählt Ihr dann

Python: Select Interpreter

aus. In der Übersicht zu den zur Verfügung stehenden Interpretern erscheint unter anderem der Ordner mit den Dateien zu Eurer virtuellen Umgebung (z.B. „.venv“). Diesen wählt Ihr aus. In der Statuszeile von Visual Studio Code wird dann dieser Interpreter angezeigt.

Wenn in Visual Studio Code ein neues integriertes Terminal gestartet wird, dann ist diese virtuelle Umgebung automatisch aktiviert. Ein solches Terminal kann übrigens über die Kommandoübersicht mit

Terminal: Create New Integrated Terminal

geöffnet werden.

Virtuelle Umgebungen in PyCharm nutzen

Die Entwicklungsumgebung PyCharm hat Virtualenv bereits integriert, so dass es nicht separat installiert werden muss. Um eine virtuelle Umgebung nutzen zu können, startet man ein neues Projekt und wählt im sich öffnenden Konfigurationsfenster

New environment using Virtualenv

aus.

Create a new project in PyCharm

Wie Ihr der Abbildung entnehmen könnt, wird im Projektverzeichnis (hier: MyProject) ein Unterordner mit der Bezeichnung „venv“ angelegt. Außerdem könnt Ihr unter „Base interpreter“ die zu verwendende Python-Version auswählen.

Nach dem Start des neuen Projekts sieht man dann in der linken Seitenleiste (im Bereich „Project“) die Projektstruktur mit dem Ordner „venv“ und den dazugehörigen Unterordnern.

Project structure in PyCharm

Zum Schluss noch der Hinweis, dass anstelle von Virtualenv entweder Pipenv oder Conda verwendet werden können, auf die ich hier aber nicht weiter eingehen werde.

Weiterführende Links