|Original author(s)||Fernando Perez|
|Stable release||3.0 / 27 February 2015|
IPython is a command shell for interactive computing in multiple programming languages, originally developed for the Python programming language, that offers enhanced introspection, rich media, additional shell syntax, tab completion, and rich history. IPython currently provides the following features:
- Powerful interactive shells (terminal and Qt-based).
- A browser-based notebook with support for code, text, mathematical expressions, inline plots and other rich media.
- Support for interactive data visualization and use of GUI toolkits.
- Flexible, embeddable interpreters to load into one's own projects.
- Easy to use, high performance tools for parallel computing.
IPython has a sophisticated and powerful architecture for parallel and distributed computing. IPython enables all types of parallel applications to be developed, executed, debugged and monitored interactively. Hence, the I in IPython. This architecture abstracts out parallelism in a very general way, which enables IPython to support many different styles of parallelism including:
- Single program, multiple data (SPMD) parallelism.
- Multiple program, multiple data (MIMD) parallelism.
- Message passing using MPI.
- Task parallelism.
- Data parallelism.
- Combinations of these approaches.
- Custom user defined approaches.
IPython Notebook is a web-based interactive computational environment for creating IPython notebooks. An IPython notebook is a JSON document containing an ordered list of input/output cells which can contain code, text, mathematics, plots and rich media.
IPython notebooks can be converted to a number of open standard output formats (HTML, HTML presentation slides, LaTeX, PDF, ReStructuredText, Markdown, Python) through 'Download As' in the web interface and 'ipython nbconvert' in a shell.
IPython Notebook connects to an IPython kernel. As of the 2.3 release (October 2014), there are currently over 21 IPython-compatible kernels for as many programming languages, including Python, R, Julia and Haskell.
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.
In the media
IPython has been mentioned in the popular computing press, and it has a presence at scientific conferences. For scientific and engineering work, it is often presented as a companion tool to matplotlib.
Grants and awards
On March 23, 2013, Fernando Perez was awarded the Free Software Foundation Advancement of Free Software award for IPython.
- The IPython notebook: a historical retrospective, January 8, 2012, Fernando Perez Blog
- "Using IPython for Parallel computing - IPython docs".
- "What's new in IPython > Issues closed in the 2.x development cycle".
- "What's new in IPython > 2.0 Series".
- "Projects using IPython > List of (some) IPython compatible kernels".
- "Notebook's announcement- 0.12 release note".
- "SciPy Stack".
- McKinney, Wes (2012). "Chapter 3". Python for Data Analysis. ISBN 978-1-449-31979-3.
- Koziol, Conrad (12 September 2005). "Introducing IPython". NewsForge.
- "IPython Presentations".
- Pérez, Fernando; Granger, Brian E. (2007). "IPython: A System for Interactive Scientific Computing". Computing in Science & Engineering 9 (3).
- "Announcement in scipy mailing list".
- "IPython Announcement".
- "Jolt Productivity Award write-up in Dr. Dobb's".
- Official website
- IPython Cookbook
- IPython: A unified environment for interactive data analysis
- Jones, Jeremy (27 January 2005). "Enhanced Interactive Python with IPython". ONLamp.com.
- Several presentations of IPython at Python and scientific conferences are listed at the official website.
- IPython introduction videos at showmedo
- Python for Scientific and Large Scale Computing[dead link] — a set of video tutorials from Ohio Supercomputer Center on Python, including IPython and its parallel computing capabilities.