IPython (Interactive Python) is a
command shell
An operating system shell is a computer program that provides relatively broad and direct access to the system on which it runs. The term ''shell'' refers to how it is a relatively thin layer around an operating system.
A shell is generally a ...
for interactive computing in multiple programming languages, originally developed for the
Python programming language
Python is a high-level, general-purpose programming language. Its design philosophy emphasizes code readability with the use of significant indentation.
Python is dynamically type-checked and garbage-collected. It supports multiple prog ...
, that offers
introspection
Introspection is the examination of one's own conscious thoughts and feelings. In psychology, the process of introspection relies on the observation of one's mental state, while in a spiritual context it may refer to the examination of one's s ...
,
rich media, shell syntax,
tab completion, and history. IPython provides the following features:
* Interactive shells (terminal and
Qt-based).
* A browser-based
notebook interface
A notebook interface or computational notebook is a virtual notebook environment used for literate programming, a method of writing computer programs. Some notebooks are WYSIWYG environments including executable calculations embedded in formatte ...
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
Parallel computing is a type of computing, computation in which many calculations or Process (computing), processes are carried out simultaneously. Large problems can often be divided into smaller ones, which can then be solved at the same time. ...
.
IPython is a
NumFOCUS fiscally sponsored project.
Parallel computing

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
MPI or Mpi may refer to:
Science and technology Biology and medicine
* Magnetic particle imaging, a tomographic technique
* Myocardial perfusion imaging, a medical procedure that illustrates heart function
* Mannose phosphate isomerase, an enzyme ...
*
Task parallelism
Task parallelism (also known as function parallelism and control parallelism) is a form of parallelization of computer code across multiple processors in parallel computing environments. Task parallelism focuses on distributing tasks—concurre ...
*
Data parallelism
Data parallelism is parallelization across multiple processors in parallel computing environments. It focuses on distributing the data across different nodes, which operate on the data in parallel. It can be applied on regular data structures like ...
* 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 th
ipyparallelpython 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
SciPy (pronounced "sigh pie") is a free and open-source Python library used for scientific computing and technical computing.
SciPy contains modules for optimization, linear algebra, integration, interpolation, special functions, fast Fourier ...
, often installed alongside one of many Scientific Python distributions.
[ IPython provides integration with some libraries of the ]SciPy
SciPy (pronounced "sigh pie") is a free and open-source Python library used for scientific computing and technical computing.
SciPy contains modules for optimization, linear algebra, integration, interpolation, special functions, fast Fourier ...
stack, notably matplotlib
Matplotlib (portmanteau of MATLAB, plot, and library) is a Plotter, plotting Library (computer science), library for the Python (programming language), Python programming language and its Numerical analysis, numerical mathematics extension NumPy. ...
, 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
Latex is an emulsion (stable dispersion) of polymer microparticles in water. Latices are found in nature, but synthetic latices are common as well.
In nature, latex is found as a wikt:milky, milky fluid, which is present in 10% of all floweri ...
when used within IPython context, and Pandas dataframe use an HTML representation.
Other features
IPython allows non-blocking interaction with Tkinter, PyGTK
PyGTK is a set of Python (programming language), Python Adapter pattern, wrappers for the GTK graphical user interface library (computer science), library. PyGTK is free software and licensed under the LGPL. It is analogous to PyQt/PySide and w ...
, 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
MPI or Mpi may refer to:
Science and technology Biology and medicine
* Magnetic particle imaging, a tomographic technique
* Myocardial perfusion imaging, a medical procedure that illustrates heart function
* Mannose phosphate isomerase, an enzyme ...
. IPython can also be used as a system shell replacement. Its default behavior is largely similar to Unix shell
A Unix shell is a Command-line_interface#Command-line_interpreter, command-line interpreter or shell (computing), shell that provides a command line user interface for Unix-like operating systems. The shell is both an interactive command languag ...
s, 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 th
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
In 2014, IPython creator Fernando Pérez announced a spin-off project from IPython called Project Jupyter
Project Jupyter (pronounced "Jupiter") is a project to develop open-source software, Open standard, open standards, and services for interactive computing across multiple Programming language, programming languages.
It was spun off from IPython ...
. IPython continued to exist as a Python shell and kernel for Jupyter, but the notebook
A notebook (also known as a notepad, writing pad, drawing pad, or legal pad) is a book or stack of paper pages that are often ruled and used for purposes such as note-taking, journaling or other writing, drawing, or scrapbooking and more.
...
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
A notebook (also known as a notepad, writing pad, drawing pad, or legal pad) is a book or stack of paper pages that are often ruled and used for purposes such as note-taking, journaling or other writing, drawing, or scrapbooking and more.
...
(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
''Acer'' is a genus of trees and shrubs commonly known as maples. The genus is placed in the soapberry family Sapindaceae.Stevens, P. F. (2001 onwards). Angiosperm Phylogeny Website. Version 9, June 2008 nd more or less continuously updated si ...
, Mathematica
Wolfram (previously known as Mathematica and Wolfram Mathematica) is a software system with built-in libraries for several areas of technical computing that allows machine learning, statistics, symbolic computation, data manipulation, network ...
, and SageMath
SageMath (previously Sage or SAGE, "System for Algebra and Geometry Experimentation") is a computer algebra system (CAS) with features covering many aspects of mathematics, including algebra, combinatorics, graph theory, group theory, differentia ...
, 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,[ and it has a presence at scientific conferences.] For scientific and engineering work, it is often presented as a companion tool to matplotlib
Matplotlib (portmanteau of MATLAB, plot, and library) is a Plotter, plotting Library (computer science), library for the Python (programming language), Python programming language and its Numerical analysis, numerical mathematics extension NumPy. ...
.
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
Microsoft Corporation is an American multinational corporation and technology company, technology conglomerate headquartered in Redmond, Washington. Founded in 1975, the company became influential in the History of personal computers#The ear ...
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.
See also
* Python (programming language)
Python is a high-level programming language, high-level, general-purpose programming language. Its design philosophy emphasizes code readability with the use of significant indentation.
Python is type system#DYNAMIC, dynamically type-checked a ...
* Electronic lab notebook
* SageMath
SageMath (previously Sage or SAGE, "System for Algebra and Geometry Experimentation") is a computer algebra system (CAS) with features covering many aspects of mathematics, including algebra, combinatorics, graph theory, group theory, differentia ...
* Project Jupyter
Project Jupyter (pronounced "Jupiter") is a project to develop open-source software, Open standard, open standards, and services for interactive computing across multiple Programming language, programming languages.
It was spun off from IPython ...
References
External links
* {{Official website
Inline graphs
Project Jupyter
Command shells
Free mathematics software
Free software programmed in Python
Notebook interface
Python (programming language) development tools
Software using the BSD license