Nützliche Tools für die lokale Entwicklung

Nützliche Tools, die dir beim Entwickeln von Python-Code für Exercism auf deinem eigenen Rechner helfen.


Note

Dies ist eine Sammlung von Tools, die in unserer Community beliebt sind. Sie soll weder als Vorschrift noch als vollständig gelten. Wir finden, dass diese Tools ihre Aufgabe gut erfüllen, aber es gibt ganz sicher auch andere gute Tools. Wenn du eine Empfehlung für einen Editor, eine IDE, ein Tool oder ein Plug-in hast, füge sie diesem Dokument auf GitHub hinzu.



Bevor du loslegst, stelle sicher, dass du eine aktuelle Version von Python installiert hast. Die Exercism-Webplattform unterstützt derzeit Python 3.10 - 3.13.5 (Übungen und Tests) und Python 3.13.5 (Tooling). Unser Online-Test-Runner verwendet derzeit pytest 8.4.0 und pytest-subtests 0.14.2. Unser Online-Analyzer verwendet pylint 4.0.4. Wenn du lokal andere Versionen von Python, pytest oder pylint verwendest, kann das zu anderen Ergebnissen führen als auf der Website. Weitere Informationen findest du unter Python lokal installieren.


Virtuelle Umgebungen

Virtuelle Umgebungen in Python bieten eine leichtgewichtige Isolierung von Laufzeitumgebung und Paketen. Sie helfen dir, deine Projekte zu organisieren, indem sie die von dir installierten Python-Pakete in einem bestimmten Umgebungsverzeichnis bündeln. Verschiedene Umgebungen können unterschiedliche Versionen der Python-Laufzeit samt der Abhängigkeiten eines Projekts oder einer Bibliothek enthalten. So vermeidest du Fehler und Inkompatibilitäten, die entstehen, wenn du eine Bibliothek für ein Projekt aktualisierst und dadurch eine Abhängigkeit in einem anderen Projekt „kaputt machst“.

Es gibt heute viele Tools für virtuelle Umgebungen und ähnliche Tools, und eine wachsende Bewegung, statt virtueller Umgebungen lieber Inline-Skript-Metadaten, Dev-Container oder Docker zu verwenden. Es ist wichtig, verschiedene Strategien auszuprobieren und eine zu finden, die zu deinem Entwicklungsstil und den Anforderungen deines Projekts passt. Geh nicht davon aus, dass die hier vorgestellten Strategien für alle passen oder deine einzigen Optionen sind. Einen allgemeineren Überblick über Tools, die hier nicht behandelt werden, findest du in diesem Blogbeitrag von Bas Nijholt. Bleib neugierig.

Wir behandeln hier drei wichtige Tools für virtuelle Umgebungen: die venv aus der Python-Standardbibliothek, die conda env von Drittanbietern, die den Paketmanager conda und (normalerweise) die Anaconda-Python-Distribution verwendet, sowie uv, einen Ersatz für pip + venv von Drittanbietern. Alle drei sind recht einfach zu benutzen und/oder zu installieren.

Darüber hinaus können PyEnv, Poetry und virtualenvwrapper dir dabei helfen, mehrere Python-Versionen und mehrere Python-Umgebungen auf demselben Rechner zu verwalten.


Eine virtuelle Umgebung mit venv erstellen

Um mit venv eine virtuelle Umgebung zu erstellen, wechsle mit cd in das Verzeichnis, in dem du deine Umgebungen speichern möchtest. Dies sollte ein Verzeichnis außerhalb des Codes deines Projekts sein, und eines, das du nicht in die Versionsverwaltung eincheckst. Führe als Nächstes den Befehl venv mit dem Namen eines Ordners aus, in dem du diese spezielle Umgebung speichern möchtest. Üblich ist es, diesen Ordner <project-name-here>_venv zu nennen:

Windows

PS C:\Users\foobar> py -m venv {name_of_virtualenv}

Um die virtuelle Umgebung zu aktivieren, führe den folgenden Befehl aus:

PS> .\{name_of_virtual_env}\Scripts\activate.bat
(venv) PS> _

Linux/MacOS

$ python3 -m venv {name_of_virtualenv}
created virtual environment ... in 8568ms

Um die virtuelle Umgebung zu aktivieren, führe den folgenden Befehl aus:

$ source {name_of_virtual_env}/bin/activate
(venv) $ _

Sobald ein venv aktiviert ist, kannst du pip-Befehle zur Paketinstallation „innerhalb“ der Umgebung ausführen. Installierte Pakete werden mit der Python-Version der venv verknüpft und liegen in {name_of_virtual_env}/Lib.

Eine virtuelle Umgebung deaktivierst du, indem du das Skript deactivate aufrufst, das im selben Verzeichnis wie activate liegt.


Eine virtuelle Umgebung mit conda erstellen

Die neueste conda-Version kannst du über miniconda installieren. Dieses conda-Cheatsheet ist sehr hilfreich, ebenso wie die conda-Dokumentation.

Ursprünglich als Python-Paketmanager für die beliebte Anaconda distribution des „wissenschaftlichen Python“ entwickelt, wurde conda später verallgemeinert und erweitert. Conda-Umgebungen ähneln venvs, mit dem entscheidenden Unterschied, dass conda neben Python auch für viele andere Programmiersprachen virtuelle Umgebungen erstellen und Pakete installieren kann.

Zu den von conda unterstützten Sprachen gehören R, JavaScript, Ruby, Fortran, C/C++, Scala, Java und weitere. Einen Vergleich der Befehle von conda und venv findest du in der conda-Befehlsreferenz.


MacOS/Linux

Um eine conda-Umgebung zu erstellen, gib Folgendes ein und ersetze {name of environment} durch den von dir gewählten Namen und python={version} durch die gewünschte Python-Version. Danach kannst du alle weiteren Pakete angeben, die du in der Umgebung installieren möchtest:

$ conda create --name {name of environment} python={version} "pytest>6.0" pylint
...

## Package Plan ##

  environment location: /usr/local/anaconda3/envs/test_env

  added / updated specs:
    - pylint
    - pytest[version='>6']
    - python=3.10


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    astroid-2.11.1             |  py310h2ec42d9_0         364 KB  conda-forge
    dill-0.3.4                 |     pyhd8ed1ab_0          62 KB  conda-forge
    lazy-object-proxy-1.7.1    |  py310he24745e_0          32 KB  conda-forge
    ....
    additional packages here
    ....
    ------------------------------------------------------------
                                           Total:        21.8 MB

Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate test_env
#
# To deactivate an active environment, use
#
#     $ conda deactivate

Windows

Zum Erstellen einer conda-Umgebung unter Windows verwendest du im Wesentlichen dieselben Befehle wie unter Linux/MacOS. Es wird jedoch empfohlen, die cmd- oder powershell-Eingabeaufforderungen von Anaconda zu verwenden, statt conda zu deinem PATH hinzuzufügen:

(base) PS C:\Users\foobar> conda create --name {name_of_environment} python={version} "pytest>6" pylint
...

Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: C:\ProgramData\Anaconda3\envs\test_env

  added / updated specs:
    - pylint
    - pytest[version='>6']
    - python=3.10


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    astroid-2.11.1             |  py310h5588dad_0         364 KB  conda-forge
    attrs-21.4.0               |     pyhd8ed1ab_0          49 KB  conda-forge
    bzip2-1.0.8                |       h8ffe710_4         149 KB  conda-forge
    ...
    additional packages here
    ...
    ------------------------------------------------------------
                                           Total:        37.5 MB

Proceed ([y]/n)? y
...
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate test_env
#
# To deactivate an active environment, use
#
#     $ conda deactivate

UV

Mit uv an Projekten arbeiten: uv

uv ist ein Python-Paket- und Projektmanagement-Tool von Astral, geschrieben in Rust. Es wurde entwickelt, um pip, venv, poetry und andere Tools zur Verwaltung von Python-Paketen und Abhängigkeiten zu ersetzen. Anders als Conda oder Mamba ist uv ausschließlich auf Python zugeschnitten. uv unterstützt jedoch das Bauen von Python-Erweiterungsmodulen, die in anderen Sprachen wie Fortran geschrieben sind. Astral ist außerdem der Entwickler des beliebten Linters Ruff und von TY, einem statischen Typprüfer für Python-Type-Hints, die beide in Rust geschrieben sind.

Statt hier ins Detail zu gehen: Die UV-Dokumentation ist deine beste Quelle für Installation und Einrichtung.

Wrapper für virtuelle Umgebungen

Dokumentation und Hintergrund: virtualenvwrapper.

Das Paket virtualenvwrapper arbeitet auf Basis von venv und verwaltet alle deine virtuellen Umgebungen an einem Ort. Du kannst Umgebungen mit Linux-ähnlichen Befehlen wie lsvirtualenv (um Umgebungen aufzulisten) und mkvirtualenv (um eine Umgebung zu erstellen) anlegen, kopieren, löschen und zwischen ihnen wechseln. Außerdem kannst du mit Erweiterungen zusätzliche Verwaltungswerkzeuge hinzufügen. Du kannst sogar deine eigenen Erweiterungen für das Tool erstellen, wie in diesem Tutorial beschrieben.


PyEnv

pyenv ist der Python-Ableger der beliebten Tools rbenv/ruby-build, angepasst für Python. Im Wesentlichen ist es eine Sammlung von Skripten und Shims, mit denen du Python-Versionen sowohl global als auch benutzerspezifisch festlegen kannst. Es folgt der Unix-Tradition eines zweckgebundenen, unaufdringlichen Tools, das eine Sache gut macht.

pyenv und die pyenv-Dokumentation findest du auf GitHub.



Editoren und IDEs



Visual Studio Code

Visual Studio Code (VS Code) ist ein kostenloser Code-Editor von Microsoft. Er bietet großartige Unterstützung für virtuelle Umgebungen und conda-Umgebungen sowie für docker (über das Docker-Plug-in) und lässt sich mit vielen verschiedenen Plug-ins für Tests, Linting, Formatierung und Webentwicklung erweitern.

Python für VS Code

Erweiterungs-ID: ms-python.python

Python-Erweiterung: Kopfzeile in VS Code

Die Python-Erweiterung von Microsoft ist die offizielle Microsoft-Python-Erweiterung für VS Code und eine sehr empfehlenswerte Installation. Sie bietet eine Vielzahl von Funktionen, darunter Umgebungsverwaltung, Testverwaltung, Linting und Debugging. Seit dem neuesten Release lädt die Installation der MS-Python-Erweiterung auch pylance (ein beliebtes Paket zum Linting und Validieren von Python-Code) und jupyter (für die Arbeit mit Jupyter Notebooks) herunter.

  • Ein Einrichtungs-Tutorial findest du hier, und die Einstellungsreferenz ist sehr hilfreich.
  • Informationen zum Einrichten von Python-Versionen und zur Arbeit mit virtuellen Umgebungen findest du hier.
  • Informationen zum Einrichten und Arbeiten mit unittest und pytest in VS Code findest du hier.

PyCharm

PyCharm ist eine IDE (integrierte Entwicklungsumgebung) von JetBrains. Sie ist speziell für Python gemacht und bei Profis beliebt. Wie VS Code lässt sie sich mit verschiedenen kostenpflichtigen und kostenlosen Plug-ins, Themes und Formatierern erweitern. Die kostenpflichtige Version unterstützt außerdem Django-Entwicklung, Docker-Entwicklung und Datenbankintegration.

PyCharm und Pytest
  • Die Schritte zum Einrichten von pytest mit PyCharm findest du hier.
  • PyCharm verwendet standardmäßig unittest. Du musst also pytest in der Umgebung installiert haben, die du mit PyCharm verwendest (siehe die Dokumente zu Interpreter und Umgebung oben), und PyCharm dann darauf verweisen.
  • Tests direkt aus der GUI auszuführen ist wirklich einfach, aber vergiss nicht, dir die zugrunde liegenden pytest-Parameter genau anzusehen, damit alles so eingerichtet ist, wie du es magst.
  • Allgemeine Dokumentation zum Ausführen von Tests und zum Debuggen in PyCharm findest du hier.
  • Zusätzliche Debugging-Tools und Anleitungen findest du hier.

Spyder IDE

Spyder ist eine plattformübergreifende, kostenlose und quelloffene Python-IDE, die auf die wissenschaftliche Community zugeschnitten ist. Sie ist häufig in der Anaconda-Distribution von Python enthalten, kann aber auch eigenständig installiert und mit jeder Python-Version verwendet werden. Wir empfehlen eine eigenständige Installation, um maximale Flexibilität zu gewährleisten und Paketkonflikte zu vermeiden.

Spyder unterstützt venv- und conda-Umgebungen vollständig. Sie enthält ein integriertes interaktives IPython-Terminal, einen interaktiven Debugger und umfangreiche Unterstützung für Diagramme und Datenexploration direkt im Editor. Zusätzliche Codevervollständigung und Linting bietet kite. Integrationen mit Jupyter Notebooks und Testwerkzeugen werden über von der Community entwickelte Plug-ins bereitgestellt. Du kannst mit der Spyder-API auch eigene Plug-ins schreiben.


Emacs

Emacs ist ein kostenloser, quelloffener und hochgradig anpassbarer Texteditor, der in Lisp geschrieben ist. Eine großartige Anleitung zur Installation und Einrichtung gibt es bei Real Python.

  • Das Emacs Wiki hat ebenfalls eine gute Anleitung zum Programmieren in Python mit Emacs.
  • Full Stack Python sammelt ebenfalls einige gute Informationen und Links für den Einstieg in Emacs.

Vim

Vim ist eine kostenlose und „verbesserte“ Version des Unix-Standard-Texteditors vi. Es gibt sie für eine Vielzahl von Betriebssystemen und Linux-/Unix-Varianten. Eine großartige Anleitung zur Installation und Einrichtung gibt es bei Real Python, und praktische Cheat Sheets findest du bei vimsheet, glump und rtorr.

Auch wenn du entscheidest, dass das Bearbeiten von Python-Code in vim nichts für dich ist, solltest du dich mit einer grundlegenden Auswahl an Befehlen vertraut machen. vim oder vi ist in Linux- und Unix-Distributionen oft der „Basis“- oder „Standard“-Texteditor und auf diesen Systemen der Standardeditor für git-Commit-Nachrichten (unter anderem). Es ist gut möglich, dass du auf einem *nix-System landest und eine Konfigurationsdatei bearbeiten musst, wobei nur vi verfügbar ist. Zu wissen, wie man vim beendet, ist (zumindest) gute Selbstverteidigung.


Spacemacs

Spacemacs (GitHub-Repo) ist eine kostenlose, community-getriebene Emacs-Distribution, die Funktionen von Emacs und Vim kombiniert.

  • Die offizielle Dokumentation findest du hier
  • Diese Anleitung bei opensource gibt einen kurzen Überblick über Installations- und Konfigurationsoptionen.
  • Der Spacemacs-Python-Layer ergänzt Funktionen für Tests, Linting, Umgebungsverwaltung und Codeformatierung.

Sublime Text

Sublime Text ist ein kostenpflichtiger Texteditor zum Programmieren von Sublime HQ Pty Ltd. Er ähnelt VS Code und Atom und bietet viele Pakete und Plug-ins zur Anpassung. Du kannst mit Python auch eigene Plug-ins für den Editor entwickeln.