IPython

Advanced interactive shell for Python
title: "IPython" type: doc version: 1 created: 2026-02-28 author: "Wikipedia contributors" status: active scope: public tags: ["command-shells", "free-mathematics-software", "free-software-programmed-in-python", "notebook-interface", "python-(programming-language)-development-tools", "software-using-the-bsd-license"] description: "Advanced interactive shell for Python" topic_path: "science/mathematics" source: "https://en.wikipedia.org/wiki/IPython" license: "CC BY-SA 4.0" wikipedia_page_id: 0 wikipedia_revision_id: 0
::summary Advanced interactive shell for Python ::
::data[format=table title="Infobox software"]
| Field | Value |
|---|---|
| name | IPython |
| logo | IPython Logo.png |
| logo size | 220px |
| screenshot | IPython-6.x-screenshot-osx.png |
| screenshot size | 220px |
| screenshot alt | Screenshot of IPython 6.x on Mac OS, showing the computation of a fourier transform using numpy. |
| caption | IPython Shell |
| author | Fernando Perez |
| developer | Brian E. Granger, Min Ragan-Kelley, Paul Ivanov, Thomas Kluyver, Matthias Bussonnier |
| released | |
| latest_release_version | |
| latest_release_date | |
| programming language | Python, JavaScript, CSS, HTML |
| operating system | Cross-platform |
| language count | |
| genre | Shell |
| license | BSD |
| :: |
| name = IPython | title = | logo = IPython Logo.png | logo size = 220px | logo alt = | logo caption = | screenshot = IPython-6.x-screenshot-osx.png | screenshot size = 220px | screenshot alt = Screenshot of IPython 6.x on Mac OS, showing the computation of a fourier transform using numpy. | caption = IPython Shell | collapsible = | author = Fernando Perez | developer = Brian E. Granger, Min Ragan-Kelley, Paul Ivanov, Thomas Kluyver, Matthias Bussonnier | released = | discontinued = | latest_release_version = | latest_release_date = | latest preview version = | latest preview date = | programming language = Python, JavaScript, CSS, HTML | operating system = Cross-platform | platform = | size = | language = | language count = | language footnote = | genre = Shell | license = BSD | alexa = | standard = | AsOf = IPython (Interactive Python) is a command shell for interactive computing in multiple programming languages, originally developed for the Python programming language, that offers introspection, rich media, shell syntax, tab completion, and history. IPython provides the following features:
- Interactive shells (terminal and Qt-based).
- A browser-based notebook interface with support for code, text, mathematical expressions, inline plots and other media.
- Support for interactive data visualization and use of GUI toolkits.
- Flexible, embeddable interpreters to load into one's own projects.
- Tools for parallel computing.
IPython is a NumFOCUS fiscally sponsored project.
Parallel computing
::figure[src="https://upload.wikimedia.org/wikipedia/commons/d/da/IpythonArchitecture.png" caption="Architectural View of IPython's parallel machinery"] ::
IPython is based on an architecture that provides parallel and distributed computing. IPython enables parallel applications to be developed, executed, debugged and monitored interactively, hence the I (Interactive) in IPython. This architecture abstracts out parallelism, enabling IPython to support many different styles of parallelism including:
- Single program, multiple data (SPMD) parallelism
- Multiple program, multiple data (MPMD) parallelism
- Message passing using MPI
- Task parallelism
- Data parallelism
- Combinations of these approaches
- Custom user defined approaches
With the release of IPython 4.0, the parallel computing capabilities were made optional and released under the ipyparallel python package. And most of the capabilities of ipyparallel are now covered by more mature libraries like Dask.
IPython frequently draws from SciPy stack libraries like NumPy and SciPy, often installed alongside one of many Scientific Python distributions. IPython provides integration with some libraries of the SciPy stack, notably matplotlib, producing inline graphs when used with the Jupyter notebook. Python libraries can implement IPython specific hooks to customize rich object display. SymPy for example implements rendering of mathematical expressions as rendered LaTeX when used within IPython context, and Pandas dataframe use an HTML representation.
Other features
IPython allows non-blocking interaction with Tkinter, PyGTK, PyQt/PySide and wxPython (the standard Python shell only allows interaction with Tkinter). IPython can interactively manage parallel computing clusters using asynchronous status callbacks and/or MPI. IPython can also be used as a system shell replacement. Its default behavior is largely similar to Unix shells, but it allows customization and the flexibility of executing code in a live Python environment.
End of Python 2 support
IPython 5.x (Long Time Support) series is the last version of IPython to support Python 2. The IPython project pledged to not support Python 2 beyond 2020 by being one of the first projects to join the Python 3 Statement, the 6.x series is only compatible with Python 3 and above. It is still possible though to run an IPython kernel and a Jupyter Notebook server on different Python versions allowing users to still access Python 2 on newer version of Jupyter.
Project Jupyter
Main article: Project Jupyter
::figure[src="https://upload.wikimedia.org/wikipedia/commons/a/af/IPython-notebook.png" caption="Old IPython Notebook interface"] ::
In 2014, IPython creator Fernando Pérez announced a spin-off project from IPython called Project Jupyter. IPython continued to exist as a Python shell and kernel for Jupyter, but the notebook interface and other language-agnostic parts of IPython were moved under the Jupyter name. Jupyter is language agnostic and its name is a reference to core programming languages supported by Jupyter, which are Julia, Python, and R.
Jupyter Notebook (formerly IPython Notebook) is a web-based interactive computational environment for creating, executing, and visualizing Jupyter notebooks. It is similar to the notebook interface of other programs such as Maple, Mathematica, and SageMath, a computational interface style that originated with Mathematica in the 1980s. It supports execution environments (aka kernels) in dozens of languages. By default Jupyter Notebook ships with the IPython kernel, but there are over 100 Jupyter kernels as of May 2018.
In the media
IPython has been mentioned in the popular computing press and other popular media, For scientific and engineering work, it is often presented as a companion tool to matplotlib.
Grants and awards
Beginning 1 January 2013, the Alfred P. Sloan Foundation announced that it would support IPython development for two years.
On 23 March 2013, Fernando Perez was awarded the Free Software Foundation Advancement of Free Software award for IPython.
In August 2013, Microsoft made a donation of $100,000 to sponsor IPython's continued development.
In January 2014, it won the Jolt Productivity Award from Dr. Dobb's in the category of coding tools. In July 2015, the project won a funding of $6 million from Gordon and Betty Moore Foundation, Alfred P. Sloan Foundation and Leona M. and Harry B. Helmsley Charitable Trust.
In May 2018, it was awarded the 2017 ACM Software System Award. It is the largest team to have won the award.
References
References
- (8 January 2012). "The IPython notebook: a historical retrospective". Fernando Perez Blog.
- "NumFOCUS Sponsored Projects". NumFOCUS.
- (2014). "Interactive notebooks: Sharing the code". Nature.
- "Using IPython for Parallel computing - IPython docs".
- "SciPy Stack".
- "Printing — SymPy 1.1 documentation".
- McKinney, Wes. (2012). "Python for Data Analysis".
- (2016-07-08). "Release of IPython 5.0 – Jupyter Blog". Jupyter Blog.
- "Project Jupyter // Speaker Deck".
- (17 October 2021). "The Notebook, Qt console and a number of other pieces are now parts of Jupyter".
- (28 August 2017). "The Big Split™".
- "Jupyter Logo · jupyter/Design Wiki".
- Somers, James. "The Scientific Paper Is Obsolete". The Atlantic.
- Koziol, Conrad. (12 September 2005). "Introducing IPython". NewsForge.
- "IPython Presentations".
- (2007). "IPython: A System for Interactive Scientific Computing". Computing in Science & Engineering.
- "Announcement in scipy mailing list".
- "IPython Announcement".
- "Jolt Productivity Award write-up in Dr. Dobb's".
- "$6M for UC Berkeley and Cal Poly to expand and enhance open-source software for scientific computing and data science".
- "Recent Software System Award News".
- "Jupyter receives the ACM Software System Award".
::callout[type=info title="Wikipedia Source"] This article was imported from Wikipedia and is available under the Creative Commons Attribution-ShareAlike 4.0 License. Content has been adapted to SurfDoc format. Original contributors can be found on the article history page. ::