Installation von Django

Nun beginnen wir mit der Installation des Django-Webframeworks auf unserem System. Dazu benötigen wir Python in der Version >= 3.11.0, Django in der Version > 5 und eine virtuelle Umgebung, um die Entwicklung sauber und flexibel zu gestalten.

Das Projekt, das wir in diesem Buch entwickeln werden, ist ein webbasiertes Tool zur Verwaltung von Veranstaltungen – ein Event-Manager. Dieser wird uns Schritt für Schritt durch die zentralen Aspekte von Django führen. Zunächst legen wir das grundlegende Verzeichnis für unser Projekt an. Details und Ziele dieses Projekts werden wir im weiteren Verlauf noch genauer beleuchten.

Es gibt grundsätzlich viele Ansätze, eine Verzeichnisstruktur für ein Django-Projekt zu gestalten. In diesem Buch werden wir eine bewährte und gut strukturierte Methode verwenden: Wir kapseln den Django-Quellcode in einem untergeordneten Verzeichnis innerhalb des Hauptprojektordners. Diese Struktur sorgt für Übersichtlichkeit und ist in vielen erfolgreichen Projekten etabliert.

Python installieren

Die Installation von Python wird in unzähligen Tutorials und Büchern ausführlich beschrieben, daher setze ich voraus, dass dieser Schritt bekannt ist. Falls Python nach der Installation nicht automatisch zur PATH-Umgebungsvariable hinzugefügt wurde, findest du hier einen hilfreichen Link, um dies manuell zu erledigen:

How to Add Python to PATH

In dem Artikel wird auch anschaulich erklärt, was Umgebungsvariablen sind. Wer sich damit noch nicht auskennt, kann sich hier einen ersten Einblick verschaffen. Im weiteren Verlauf dieses Buchs werden wir ebenfalls mit Umgebungsvariablen arbeiten.

Tipp

Um auf einem Linux- oder Unix-System komfortabel verschiedene Python-Versionen zu nutzen, lohnt sich ein Blick auf das Tool pyenv. Mit pyenv lässt sich jede gewünschte Python-Version installieren und als globalen Interpreter festlegen. Ein zusätzlicher Vorteil ist, dass du unabhängig von der System-Python-Version bleibst.

Eine ausführliche Anleitung zur Nutzung von pyenv findest du in diesem Artikel auf realpython.com: https://realpython.com/intro-to-pyenv/

uv installieren

Bevor wir unser Projekt erstellen, installieren wir das Tool uv. Dieses wird später für die Verwaltung unseres Projekts, der virtuellen Umgebung und der Abhängigkeiten verwendet.

Wir installieren uv mit pipx, damit es global verfügbar ist, aber isoliert vom System bleibt:

pipx install uv

Weitere Informationen findest du auf der offiziellen Website: https://github.com/astral-sh/uv

Django-Projektverzeichnis anlegen

Wir möchten alle Django-Projekte zentral in einem Verzeichnis auf unserem Rechner verwalten. Dazu legen wir an einem passenden Ort ein neues Verzeichnis namens django_projects an und wechseln direkt in dieses neu erstellte Verzeichnis:

mkdir django_projects && cd django_projects

Unser Projekt wird ein Event-Manager sein. Statt das Projektverzeichnis manuell anzulegen, nutzen wir nun uv:

uv init event_project

Dieses Verzeichnis fungiert als das zentrale Projektverzeichnis, in dem neben dem Django-Projekt auch alle Dateien abgelegt werden, die nicht unmittelbar zum Django-Quellcode gehören. Dazu zählen beispielsweise die README.md, die .gitignore und ähnliche Dateien. Hier werden wir später mit git init das Git-Repository initialisieren und, falls erforderlich, eine docker-compose.yml-Datei hinzufügen.

Erstellen wir nun die README.md und die .gitignore bereits vorab. Diese Dateien werden später benötigt, wenn wir das Projekt mit git versionieren.

Hinweis: Alle Pfadangaben in diesem Tutorial beziehen sich auf dieses Verzeichnis.

Virtuelle Umgebung anlegen

Das Tool uv erstellt und verwaltet virtuelle Umgebungen automatisch für uns. Eine separate Erstellung mit venv ist daher nicht notwendig. Die virtuelle Umgebung wird beim ersten Installieren von Paketen automatisch erzeugt.

Warum benötigt man eine virtuelle Umgebung?

Das Ziel einer virtuellen Umgebung ist es, die für ein Projekt benötigten Python-Pakete und Module voneinander zu isolieren. Wenn Projekte unterschiedliche Versionen desselben Moduls verwenden, verhindert eine virtuelle Umgebung, dass es zu Konflikten kommt. In Python ist dies der bewährte Ansatz, um eine saubere Trennung der Abhängigkeiten zu gewährleisten.

Good Practice

Virtuelle Umgebungen sollten nicht in die Versionskontrolle aufgenommen werden, da sie sonst versioniert werden. Aus diesem Grund fügen wir das Verzeichnis .venv zur .gitignore-Datei hinzu.

Noch mehr Isolation

Das Isolieren von Python-Projekten mittels einer virtuellen Umgebung ist der einfachste Ansatz, um die Abhängigkeiten zu trennen. In der Praxis werden Projekte jedoch zunehmend mithilfe von Containerisierung (z. B. Docker) oder virtuellen Maschinen isoliert, um auch zusätzliche Komponenten wie Datenbanken oder Webserver unabhängig vom Host-System zu betreiben.

Das Ziel dieser Virtualisierungen ist es, sicherzustellen, dass alle am Projekt beteiligten Entwickler in exakt identischen Umgebungen arbeiten. Eine virtuelle Umgebung allein kann diese vollständige Gleichheit nicht gewährleisten.

Django installieren

Jetzt ist es an der Zeit, Django zu installieren. Wir verwenden dafür uv:

cd event_project
uv add django==5.0.6

Dabei passiert im Hintergrund Folgendes:

  • Eine virtuelle Umgebung wird automatisch erstellt

  • Die Datei pyproject.toml wird aktualisiert

  • Alle Abhängigkeiten werden aufgelöst und installiert

Die Projektstruktur sieht nun ungefähr so aus:

├── django_projects
       └── event_project
           ├── pyproject.toml
           ├── uv.lock
           ├── README.md
           └── .gitignore

Falls ein Projekt bereits existiert und die Abhängigkeiten installiert werden sollen, kann man diese mit folgendem Befehl synchronisieren:

uv sync

Wenn wir wissen wollen, welche Django-Version installiert wurde, können wir das prüfen, in dem wir die interaktive Python-shell starten, Django importieren und die Methode get_version() aufrufen.

uv run python
>>> import django
>>> django.get_version()

Noch einfacher geht es mit diesem Befehl in der Konsole:

uv run python -m django --version

Mehr zum Thema Installation von Django findet sich in der Doku: