Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Entwicklungsumgebungen (IDEs) und Editoren

Heinrich-Heine-Universität Düsseldorf

Für die Python-Entwicklung steht eine Vielzahl von Werkzeugen zur Verfügung – von minimalistischen Editoren bis hin zu vollwertigen, integrierten Entwicklungsumgebungen.

Worum es geht. Die Umgebungen, in denen man Python schreibt — von IDLE über Emacs und Jupyter bis PyCharm und VS Code — und vor allem die Architektur, die sie alle teilen: das Language Server Protocol.

Was Sie danach können. Erklären, woher ein Editor überhaupt weiß, was Ihr Code bedeutet; einen Language Server von Hand starten; und begründen, warum Linter und Type Checker in der IDE dieselben Befunde liefern wie in der Continuous Integration.

Die Java-Entsprechung in einem Satz. Was in der Java-Welt eng an Eclipse oder IntelliJ gebunden war, ist in Python über das LSP aus dem Editor herausgelöst — ein und derselbe Language Server bedient VS Code, Neovim und Emacs.

IDLE (Integrated Development and Learning Environment)

IDLE ist die Standard-Umgebung, die direkt mit Python ausgeliefert wird. Sie basiert auf dem GUI-Toolkit Tkinter. Da sie ohne zusätzliche Paketmanager oder Konfigurationen sofort startklar ist, eignet sie sich für absolute Anfänger oder um sehr schnelle, kleine Skripte isoliert zu testen. Für den produktiven Einsatz fehlen ihr jedoch moderne Komfortfunktionen.

Text-Editoren für Power-User: Emacs

Für tastaturzentrierte Power-User in performanten Linux-Umgebungen bietet sich Emacs an. Der bevorzugte Major Mode für Python ist heute python-mode (bzw. python-ts-mode für modernes, schnelles Tree-Sitter-Highlighting). Um vollwertige IDE-Features zu erhalten, wird Emacs mit einem LSP-Client (wie eglot oder lsp-mode) gekoppelt, um die Code-Intelligenz asynchron abzufragen.

Jupyter Lab

Jupyter Lab ist der De-facto-Standard im Bereich Data Science, Machine Learning und für interaktive Skripte. Das Kernkonzept basiert auf interaktiven Notebooks, in denen Code in einzelnen “Zellen” ausgeführt wird. Dies ermöglicht ein exploratives Programmieren (REPL-Prinzip: Read-Eval-Print Loop), bei dem Variablen im Speicher bleiben und Datenvisualisierungen direkt unter dem Code gerendert werden.

Moderne IDEs

PyCharm

PyCharm wird von JetBrains entwickelt und baut technologisch auf der in Java geschriebenen IntelliJ-Plattform auf. Es ist eine sehr umfangreiche (“schwere”) IDE, die Entwicklern tiefe statische Code-Analysen, exzellente Refactoring-Tools und Out-of-the-box-Integration in professionelle Workflows bietet.

Visual Studio Code (VS Code)

VS Code von Microsoft ist ein leichtgewichtigerer Editor, der seine Funktionalität modular über Erweiterungen erhält. Ein großer architektonischer Vorteil ist die nahtlose webbasierte Nutzung: Unter vscode.dev oder direkt in GitHub (durch Drücken der .-Taste in einem Repository) kann VS Code inklusive vieler Basis-Sprachfeatures komplett im Browser ausgeführt werden.

Ein Vergleich der beiden Platzhirsche

Architektur: Das Language Server Protocol (LSP)

Das LSP entkoppelt den Editor von der sprachspezifischen Logik. Der Editor fungiert lediglich als visueller Client und fragt bei einem im Hintergrund laufenden “Language Server” analytische Features wie Go-to-Definition, Autovervollständigung und strenge Typüberprüfungen an.

Historisch war Jedi der Standard für statische Python-Analyse. Da strikte Typisierung und Geschwindigkeit im modernen Python-Ökosystem extrem an Bedeutung gewinnen, gibt es heute performantere Nachfolger. Ein herausragendes Beispiel ist Zuban. Zuban ist ein in Rust geschriebener Type-Checker und Language Server, der vom ursprünglichen Jedi-Autor entwickelt wurde. Er bietet eine hohe Mypy-Kompatibilität, verbraucht jedoch deutlich weniger Speicher und operiert 20- bis 200-mal schneller als Mypy.

  • Jedi: Historisch der Standard-Server für Autovervollständigung. Wird heute für große, typisierte Codebasen zu langsam sein.

  • Mypy: Der De-facto-Standard Type Checker. Er wird primär als CLI-Tool in der CI-Pipeline genutzt (uv run mypy .), kann aber auch in Editoren integriert werden.

  • Pyright / Pylance: Ein von Microsoft in TypeScript geschriebener, extrem schneller Type Checker und Language Server. Pylance (die proprietäre VS Code Erweiterung) basiert auf Pyright. Er ist exzellent im Ableiten von Typen (Type Inference) und oft strenger und deutlich performanter als Mypy.

  • Zuban / ty / pyrefly: Die modernste Generation. Zuban ist ein in Rust geschriebener Type Checker vom ursprünglichen Jedi-Autor, der Mypy-Kompatibilität bei 20- bis 200-facher Geschwindigkeit bietet.

  • Ruff (als LSP): Der extrem schnelle Rust-Linter ruff bringt mittlerweile einen eigenen ruff server mit. Er ersetzt keinen Type Checker wie Pyright, übernimmt aber das blitzschnelle Formatieren und Aufzeigen von Syntax- und Stil-Fehlern (Flake8-Äquivalente) in Echtzeit beim Tippen.

Dasselbe Prinzip trägt die Werkzeuge aus dem Kapitel Code-Qualität: ruff und mypy laufen als eigenständige Prozesse auf der Kommandozeile und in der CI — und dieselben Programme sprechen über LSP mit dem Editor. Deshalb meldet die IDE genau das, was auch der Build meldet, und nicht etwas Ähnliches.

Integration der modernen Toolchain

In einer modernen Python-Umgebung konkurrieren diese Tools nicht, sondern ergänzen sich nahtlos. Eine saubere Integration in VS Code, Emacs oder Neovim sieht konzeptionell so aus:

  1. Environment: uv verwaltet das Projekt und das versteckte .venv. Der Editor wird konfiguriert, den Python-Interpreter aus diesem .venv zu nutzen.

  2. Diagnostics & Formatting: Der ruff server wird als LSP gestartet. Er liefert Millisekunden-schnelles Feedback zu Linter-Regeln und führt “Format on Save” (Ersatz für Black/isort) aus.

  3. Typ-Sicherheit: Parallel läuft pyright (oder ein Mypy/Zuban LSP) als zweiter Language Server, der sich ausschließlich um die semantische Analyse und Typ-Inferenz kümmert.

Die IDE startet im Hintergrund selbst die Language-Server; von Hand würde man dies aufrufen:

ruff server
pyright-langserver --stdio

Und die Agenten?

Bis hierher ging es um Werkzeuge, die der Mensch bedient: Editor, Language Server, Linter, Type Checker. Die Werkzeuge, die den Code selbst schreiben, haben ein eigenes Kapitel bekommen, weil sie eine eigene Arbeitsweise mitbringen und nicht nur eine weitere Funktion der IDE sind — siehe Agentic Coding.

Der Zusammenhang zu diesem Kapitel bleibt aber eng: Ein Agent, der ruff und mypy aufrufen kann, bekommt dieselbe maschinelle Rückmeldung wie die IDE über das Language Server Protocol, nur als Text statt als Unterstreichung. Die Toolchain aus dem Abschnitt oben ist damit nicht überflüssig geworden, sondern hat einen zweiten Nutzer bekommen.

Zusammenfassung und Kontrollfragen

  1. Die Wahl der Umgebung ist weniger folgenreich als die Frage, welche Werkzeuge darin laufen — und die sind in allen Umgebungen dieselben.

  2. Das Language Server Protocol trennt Sprachwissen von der Darstellung: Ein Prozess analysiert den Code, jeder beliebige Editor zeigt das Ergebnis an.

  3. Ruff, mypy und ein LSP-Server sind deshalb keine IDE-Funktionen, sondern eigenständige Programme, die die IDE lediglich startet.

  4. Daraus folgt die praktisch wichtigste Eigenschaft: Was die IDE unterstreicht, meldet auch die CI — gleiche Programme, gleiche Konfiguration, kein “läuft bei mir”.

  5. Coding-Agenten hängen an derselben Toolchain; sie lesen deren Ausgabe als Text statt als Unterstreichung.

Kontrollfragen

  1. Welche zwei Programme würden Sie von Hand starten, um einem Editor ohne eingebaute Python-Unterstützung Fehlerprüfung und Autovervollständigung beizubringen?

  2. Warum können IDE und CI dieselben Befunde liefern, obwohl beide nichts voneinander wissen? Was genau ist die gemeinsame Grundlage?

  3. Welche der genannten Umgebungen ist laut Kapitel auf ein GUI-Toolkit angewiesen — und welche lässt sich stattdessen vollständig im Browser benutzen? Was folgt daraus für die Arbeit über SSH auf einem Server ohne Grafik?

Weitere Lektüre

IDEs & Architektur

  • PyCharm vs. VS Code (Vergleich): Tech-Insider – Analyse von Monolith vs. modularer Architektur.

  • Emacs für Python: RealPython – Deep Dive in LSP und Tree-Sitter.

  • Oxidization des Toolings: Astral Blog – Warum Python-Tools (Ruff/uv) in Rust neu entstehen.

Type Checking & Performance

  • Mypy vs. Pyright: Microsoft Docs – Direkter Vergleich der Inferenz-Stärke.

  • Zuban: ZubanLS – Dokumentation zum Rust-Nachfolger für Jedi.