IPython

Kommandozeileninterpreter zum interaktiven Arbeiten mit der Programmiersprache Python

IPython ist ein Kommandozeileninterpreter zum interaktiven Arbeiten mit der Programmiersprache Python. Es handelt sich nicht um eine bloße Erweiterung der in Python eingebauten Shell (siehe interaktive Benutzung von Python), sondern um eine Softwaresuite zum Entwickeln und Ausführen von Python-Programmen. Funktionen wie Introspektion, Befehlszeilenergänzung, Rich-Media-Einbettung und verschiedenen Frontends (Terminal, Qt-basiert oder browserbasiert) ermöglichen es, Python-Anwendungen mit einem Komfort zu entwickeln, wie man ihn von Software wie Matlab oder Mathematica kennt. IPython kann auch als integrierte Entwicklungsumgebung betrachtet werden. Tatsächlich handelt es sich bei IPython um ein Client-Server-Framework, welches für High-Performance-Rechnungen durch Parallelrechner verwendet werden kann.

IPython


IPython-Shell mit Matplotlib-Plotfenster
Basisdaten

Entwickler Fernando Pérez
Erscheinungsjahr 2001
Aktuelle Version 8.26.0[1]
(28. Juni 2024)
Betriebssystem plattformübergreifend
Programmier­sprache Python[2], JavaScript, C
Lizenz 3-Klausel-BSD[3]
deutschsprachig ja
ipython.org

Ursprung

Bearbeiten

IPython wurde 2001 von Fernando Pérez entwickelt, es entstammt der Domäne des wissenschaftlichen Rechnens. Da er aus Mathematica ein Notebook kannte und er dies in Python vermisste, fing er an eines für Python zu programmieren.[4]

Die Integration von Matplotlib in die Notebookoberfläche macht es zu einem Open-Source-Konkurrenten für die verbreitete Numerik-Software Matlab, weswegen man die Kombination von IPython mit Matplotlib oft auch als Pylab bezeichnet.

Architektur und Notebook

Bearbeiten
 
Die Architektur von IPython

Eine Besonderheit bei IPython ist der Einbau der Messagequeue ØMQ (vgl. Message Oriented Middleware). So trennt die Architektur von IPython klar das Backend als die Recheneinheit, etwa der Python-Interpreter, von dem Frontend als Darstellungsebene. Diese Trennung erlaubt es, IPython weitgehend universal für verschiedene Backends (oft auch Kernel genannt) und Frontends zu verwenden. Mithilfe des eventbasierten Python-Webservers Tornado und WebSockets stellt eine Weboberfläche ein mögliches Frontend dar. Dies erlaubt es, IPython im modernen Web (Web 2.0) flexibel einzusetzen.

IPython ist dokumentenorientiert. Ein IPython-Dokument wird, wie in dem wissenschaftlichen Umfeld üblich, als Notebook bezeichnet. Ein Notebook ist eine JSON-Datei, die eine geordnete Liste von Eingabe- und Ausgabezellen enthält, welche Code, Plain text, LaTeX-Ausgaben, Plots und diverse Medienformate darstellen kann. Damit unterscheidet sich ein IPython-Notebook grundsätzlich etwa von einem einfachen Python-Script, welches (in der Regel) nur Code enthält.

Beginnend mit Version 4.0 wurde das Projekt insgesamt aufgeteilt und weiter modularisiert. IPython wird fortan nicht länger als einzelnes, monolithisches Paket vertrieben, sondern begrenzt sich nun auf die an Python gebundenen Kernkomponenten. Sämtliche sprachunabhängige Module (wie das Notebook, die Qtconsole und die Messagequeue) wurden dagegen in ein neues Projekt namens Jupyter ausgelagert und können so zukünftig auch unabhängig von IPython genutzt und aktualisiert werden.[5]

Bearbeiten

Einzelnachweise

Bearbeiten
  1. ipython 8.26.0.
  2. The ipython Open Source Project on Open Hub: Languages Page. In: Open Hub. (abgerufen am 19. Juli 2018).
  3. ipython.org. (abgerufen am 20. Juli 2017).
  4. Fernando Perez: The IPython notebook: a historical retrospective. Abgerufen am 28. November 2019 (englisch).
  5. IPython-4-Release schließt Projektmodularisierung ab, Bericht auf heise.de vom 12. August 2015; abgerufen am 20. August 2015.