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
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]