Django unter macOS installieren

Dieser Artikel zeigt, wie man Django in einer virtuellen Umgebung unter macOS einrichtet. Auch wenn sich diese Ausführungen primär an Mac-Benutzer richten, funktionieren sie unter Windows und Linux in ähnlicher Weise.

Zunächst sollte sichergestellt sein, dass Python 3 installiert ist. Nach der Eingabe von

$ python3 -V

sollte man eine positive Rückmeldung erhalten, z.B.

Python 3.7.2

Falls Python 3 bisher nicht auf Eurem Mac installiert ist, ruft die Internetseite des Python-Projekts auf und ladet Euch die aktuellste Version herunter.

Das Modul virtualenv

Zunächst zeige ich, wie eine virtuelle Umgebung mithilfe von virtualenv erstellt werden kann. Hierbei handelt es sich um ein separates Modul, das mit pip bzw. pip3 installiert werden muss:

$ pip3 install virtualenv

Nun sollte ein Ordner erstellt werden, der zum Heimatort für Euer Django-Projekt wird. In der Shell ist dies schnell mit

$ mkdir <Ordnername>

erledigt.

Als nächstes kann die virtuelle Umgebung erzeugt werden. Die Syntax zum Erstellen einer neuen virtuellen Umgebung folgt folgendem Muster:

$ virtualenv -p python3 <Pfad>

Angenommen, die virtuelle Umgebung soll in einem neu zu erstellenden Ordner mit der Bezeichnung „Django-Projekt“ erzeugt werden, dann wären folgende Schritte in der Shell erforderlich.

$ mkdir Django-Projekt
$ cd Django-Projekt
virtualenv -p python3 .

Ein Punkt meint dabei das aktuelle Verzeichnis.

Als Rückmeldung erscheint eine Information ähnlich der folgenden:

Running virtualenv with interpreter /Library/Frameworks/Python.framework/Versions/3.7/bin/python3
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.7'
New python executable in /Users/bodo/Development/Python/Django-Projekt/bin/python3
Also creating executable in /Users/bodo/Development/Python/Django-Projekt/bin/python
Installing setuptools, pip, wheel...done.

Jetzt muss die virtuelle Umgebung aktiviert werden:

$ source bin/activate
(Django-Projekt) $

Im nächsten Schritt kann Django mithilfe von pip (bzw. pip3) zur aktiven virtuellen Umgebung hinzugefügt werden:

(Django-Projekt) $ pip3 install django

Und damit ist die Einrichtung abgeschlossen. Zum Verlassen der virtuellen Umgebung steht übrigens der Befehl deactivate zur Verfügung:

(Django-Projekt) $ deactivate

Bleibt noch die Frage: Wofür dieser Aufwand? Dies ist schnell beantwortet. Die innerhalb der virtuellen Umgebung installierten Module stehen nur in dieser Umgebung zur Verfügung. Sie sind unabhängig von den ansonsten (global oder in anderen virtuellen Umgebungen) installierten Modulen. Man kann also nicht Gefahr laufen, dass bei einem (globalen) Update von Modulen etwaige Abhängigkeiten brechen (und damit der Code nicht mehr funktionieren mag). Und dies gilt nicht nur für Module, denn in unterschiedlichen virtuellen Umgebungen können auch unterschiedliche Python-Versionen genutzt werden.

Das Modul venv

Neben virtualenv gibt es noch venv. 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. In der Dokumentation zu diesem Modul wird venv folgendermaßen beschrieben:

The venv module provides support for creating lightweight “virtual environments” with their own site directories, optionally isolated from system site directories.

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

Bezogen auf obiges Beispiel, könnte ich also auch folgendermaßen vorgehen:

Zunächst erstelle ich einen Projektordner und wechsle in diesen Ordner:

$ mkdir Django-Projekt
$ cd Django-Projekt

Hier erzeuge ich die virtuelle Umgebung, wobei die hierfür erforderlichen Verzeichnisse und Dateien im Ordner „.venv“ angelegt werden sollen.

$ python3 -m venv .venv

Die virtuelle Umgebung wird anschließend mit

$ source .venv/bin/activate

erzeugt. Die Deaktivierung erfolgt mit:

$ deactivate