Revision as of 04:44, 5 March 2013 editWingman4l7 (talk | contribs)Extended confirmed users, Rollbackers9,106 edits →External links: -- marked link as dead← Previous edit | Latest revision as of 18:05, 20 April 2024 edit undo1234qwer1234qwer4 (talk | contribs)Extended confirmed users, Page movers197,944 editsm →Parallel computing: only linked later | ||
(271 intermediate revisions by more than 100 users not shown) | |||
Line 1: | Line 1: | ||
{{ |
{{For|the implementation of Python under the .NET Framework|IronPython}} | ||
{{Short description|Advanced interactive shell for Python}} | |||
{{Infobox Software| | |||
{{Use dmy dates|date=August 2015}} | |||
name = IPython | |||
{{Infobox software | |||
|logo = | |||
| |
| name = IPython | ||
| title = | |||
|caption = Screenshot of IPython | |||
| logo = IPython Logo.png<!-- Image name is enough --> | |||
|author = Fernando Perez and others | |||
| logo size = 220px | |||
|latest release version = 0.13.1 | |||
| logo alt = | |||
|latest release date = {{Release date and age|2012|10|21|df=yes}} | |||
| logo caption = | |||
|operating_system = ] | |||
| screenshot = IPython-6.x-screenshot-osx.png<!-- Image name is enough --> | |||
|genre = ] | |||
| screenshot size = 220px | |||
|license = ] | |||
| screenshot alt = Screenshot of IPython 6.x on Mac OS, showing the computation of a fourier transform using numpy. | |||
|website = {{URL|http://ipython.org/}} | |||
| caption = IPython Shell | |||
| collapsible = | |||
| author = ]<ref name=history>{{cite web|url=http://blog.fperez.org/2012/01/ipython-notebook-historical.html|title=The IPython notebook: a historical retrospective|date=8 January 2012|publisher=Fernando Perez Blog}}</ref> | |||
| developer = Brian E. Granger, Min Ragan-Kelley, Paul Ivanov, Thomas Kluyver, Matthias Bussonnier | |||
| released = {{Start date and age|2001|df=yes}}<ref name=history /> | |||
| discontinued = | |||
| latest_release_version = {{wikidata|property|reference|edit|Q2659957|P348}} | |||
| latest_release_date = {{start date and age|{{wikidata|qualifier|Q2659957|P348|P577}}}} | |||
| latest preview version = | |||
| latest preview date = | |||
| programming language = ], ], ], ] | |||
| operating system = ] | |||
| platform = | |||
| size = | |||
| language = | |||
| language count = <!-- Number only --> | |||
| language footnote = | |||
| genre = ] | |||
| license = ] | |||
| alexa = | |||
| standard = | |||
| AsOf = | |||
}} | }} | ||
'''IPython''' is |
'''IPython''' (Interactive Python) is a ] for interactive computing in multiple programming languages, originally developed for the ], that offers ], ], shell syntax, ], and history. IPython provides the following features: | ||
* Interactive shells (terminal and ]-based). | |||
== Notebook == | |||
* A browser-based ] with support for code, text, mathematical expressions, inline plots and other media. | |||
Since the 0.12 release,<ref name="releasenote012"></ref> IPython provide a new rich text web interface: Notebook. Notebook is composed of two component: a JSON-based format to share python source and its rich formating and response and the web interface itself. This interface is close to ]'s and ]'s one and its purpose is to bring a clean and accessible interface to non developer. | |||
* Support for interactive data visualization and use of GUI toolkits. | |||
* Flexible, embeddable interpreters to load into one's own projects. | |||
* Tools for ]. | |||
IPython is a ] fiscally sponsored project.<ref>{{cite web|title=NumFOCUS Sponsored Projects|url=https://numfocus.org/sponsored-projects|publisher=NumFOCUS|access-date=2021-10-25}}</ref> | |||
== 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<!-- The 'I' in IPython refers to an 'interactive' command window that helps users to run code, access variables, call up data analysis packages and view plots, while the Python refers to the popular programming language that the notebook is based on. see, http://www.nature.com/news/interactive-notebooks-sharing-the-code-1.16261 -->.<ref>{{cite journal|last1=Helen|first1=Shen|title=Interactive notebooks: Sharing the code|journal=Nature|date=2014|volume=515|issue=7525|pages=151–152|doi=10.1038/515151a|pmid=25373681|bibcode=2014Natur.515..151S|doi-access=free}}</ref> This architecture abstracts out parallelism, enabling IPython to support many different styles of parallelism<ref>{{cite web|title=Using IPython for Parallel computing - IPython docs|url=https://ipython.org/ipython-doc/stable/parallel/parallel_intro.html}}</ref> including: | |||
* Single program, multiple data (]) parallelism | |||
* Multiple program, multiple data (]) parallelism | |||
* Message passing using ] | |||
* ] | |||
* ] | |||
* 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 python package. And most of the capabilities of ipyparallel are now covered by more mature libraries like ]. | |||
IPython frequently draws from SciPy stack<ref name="scipystack">{{cite web|url=http://www.scipy.org/install.html|title=SciPy Stack}}</ref> libraries like ] and ], often installed alongside one of many Scientific Python distributions.<ref name="scipystack" /> IPython provides integration with some libraries of the ] stack, notably ], producing inline graphs when used with the ] notebook. Python libraries can implement IPython specific hooks to customize rich object display. ] for example implements rendering of mathematical expressions as rendered ] when used within IPython context, and ] dataframe use an HTML representation.<ref>{{Cite web|url=http://docs.sympy.org/1.1/tutorial/printing.html#setting-up-pretty-printing|title=Printing — SymPy 1.1 documentation|website=docs.sympy.org|access-date=2018-04-11}}</ref> | |||
== Other features == | == Other features == | ||
IPython allows non-blocking interaction with ], ], ]/] and ] (the standard Python shell only allows interaction with Tkinter). IPython can interactively manage parallel ] using asynchronous status callbacks and/or ]. IPython can also be used as a system shell replacement.<ref name="McKinney">{{cite book|chapter-url=http://shop.oreilly.com/product/0636920023784.do|last=McKinney|first=Wes|title=Python for Data Analysis|chapter=Chapter 3|year=2012|isbn=978-1-449-31979-3}}</ref> Its default behavior is largely similar to ]s, but it allows customization and the flexibility of executing code in a live Python environment. | |||
== End of Python 2 support == | |||
IPython allows non-blocking interaction with ], ], ] and ] (the standard Python shell only allows interaction with ]). IPython can interactively manage parallel ] using asynchronous status callbacks and/or ]. IPython can also be used as a system shell replacement. Its default behavior is largely familiar to ]s, but it allows customization and the flexibility of executing code in a live Python environment. | |||
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<ref>{{Cite news|url=https://blog.jupyter.org/release-of-ipython-5-0-8ce60b8d2e8e|title=Release of IPython 5.0 – Jupyter Blog|date=2016-07-08|work=Jupyter Blog|access-date=2018-04-11}}</ref> by being one of the first projects to join the , 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|Project Jupyter}} | |||
{{Third-party|section|date=October 2016}} | |||
] | |||
In 2014, IPython creator ] announced a spin-off project from IPython called ].<ref>{{cite web|url=https://speakerdeck.com/fperez/project-jupyter|title=Project Jupyter // Speaker Deck}}</ref> IPython continued to exist as a Python shell and kernel for Jupyter, but the ] interface and other language-agnostic parts of IPython were moved under the Jupyter name.<ref>{{cite web|url=https://github.com/ipython/ipython|title=The Notebook, Qt console and a number of other pieces are now parts of Jupyter|website=] |date=17 October 2021}}</ref><ref>{{cite web|url=https://blog.jupyter.org/the-big-split-9d7b88a031a7|title=The Big Split™|date=28 August 2017}}</ref> Jupyter is language agnostic and its name is a reference to core programming languages supported by Jupyter, which are ], ], and ].<ref>{{Cite web|url=https://github.com/jupyter/design/Jupyter-Logo|title=Jupyter Logo · jupyter/Design Wiki|website=] }}</ref> | |||
Jupyter ] (formerly IPython Notebook) is a ] computational environment for creating, executing, and visualizing Jupyter notebooks. It is similar to the notebook interface of other programs such as ], ], and ], a computational interface style that originated with Mathematica in the 1980s.<ref name="Somers2018">{{Cite news|url=https://www.theatlantic.com/science/archive/2018/04/the-scientific-paper-is-obsolete/556676/|title=The Scientific Paper Is Obsolete|last=Somers|first=James|work=The Atlantic|access-date=2018-04-10|language=en-US}}</ref> 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 == | == In the media == | ||
IPython has been mentioned in the popular computing press and other popular media,<ref name="press2">{{cite web|title=Introducing IPython|date=12 September 2005|last=Koziol|first=Conrad|publisher=NewsForge|url=http://archive09.linux.com/feature/47635|access-date=14 June 2012|archive-date=7 June 2012|archive-url=https://web.archive.org/web/20120607065802/http://archive09.linux.com/feature/47635|url-status=dead}}</ref><ref name=Somers2018/> and it has a presence at scientific conferences.<ref name="press1">{{cite web|url=https://ipython.org/presentation.html|title=IPython Presentations}}</ref> For scientific and engineering work, it is often presented as a companion tool to ].<ref name="cise">{{cite journal |last1=Pérez |first1=Fernando |last2=Granger |first2=Brian E. |title=IPython: A System for Interactive Scientific Computing |journal=Computing in Science & Engineering |volume=9 |pages=21–29 |number=3 |year=2007 |url=http://fperez.org/papers/ipython07_pe-gr_cise.pdf |url-status=dead |archive-url= https://web.archive.org/web/20100602042637/http://fperez.org/papers/ipython07_pe-gr_cise.pdf |archive-date= 2 June 2010 |access-date= 30 July 2015|doi=10.1109/MCSE.2007.53 |bibcode=2007CSE.....9c..21P |s2cid=16637923 }}</ref> | |||
== Grants and awards == | |||
IPython has been mentioned in the popular computing press,<ref name="press2">{{cite web|title=Introducing IPython|date=12 September 2005|author=Conrad Koziol|publisher=NewsForge|url=http://archive09.linux.com/feature/47635}}</ref> and it has a presence at scientific conferences.<ref name="press1"></ref> For scientific and engineering work, it is often presented as a companion tool to ].<ref name="press3"></ref> | |||
Beginning 1 January 2013, the ] announced that it would support IPython development for two years.<ref>{{cite web|url=http://mail.scipy.org/pipermail/ipython-dev/2012-December/010799.html|title=Announcement in scipy mailing list|access-date=12 December 2012|archive-date=5 March 2016|archive-url=https://web.archive.org/web/20160305020306/https://mail.scipy.org/pipermail/ipython-dev/2012-December/010799.html|url-status=dead}}</ref> | |||
On 23 March 2013, ] was awarded the Free Software Foundation ] for IPython. | |||
== Grant from the Alfred P. Sloan Foundation == | |||
Beginning Jan 1, 2013, the ] is going to support iPython development for two years.<ref></ref> | |||
In August 2013, ] made a donation of $100,000 to sponsor IPython's continued development.<ref>{{cite web|url=https://ipython.org/microsoft-donation-2013.html|title=IPython Announcement}}</ref> | |||
In January 2014, it won the ]<ref>{{cite web|url=http://www.drdobbs.com/joltawards/jolt-awards-coding-tools/240165725?pgno=5|title=Jolt Productivity Award write-up in Dr. Dobb's}}</ref> from ] 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.<ref>{{Cite news|url = https://www.moore.org/newsroom/press-releases/2015/07/07/$6m-for-uc-berkeley-and-cal-poly-to-expand-and-enhance-open-source-software-for-scientific-computing-and-data-science|title = $6M for UC Berkeley and Cal Poly to expand and enhance open-source software for scientific computing and data science|access-date = 13 August 2015}}</ref> | |||
In May 2018, it was awarded the 2017 ACM Software System Award.<ref>{{cite web|url=https://awards.acm.org/software-system|title=Recent Software System Award News}}</ref> It is the largest team to have won the award.<ref>{{cite news|url = https://blog.jupyter.org/jupyter-receives-the-acm-software-system-award-d433b0dfe3a2|title=Jupyter receives the ACM Software System Award}}</ref> | |||
== See also == | |||
{{Portal|Free and open-source software|Computer programming}} | |||
* ] | |||
* ] | |||
* ] | |||
* ] | |||
== References == | == References == | ||
Line 33: | Line 101: | ||
== External links == | == External links == | ||
* {{Official website}} | |||
{{Portal|Computer programming}} | |||
* | |||
* {{Official website|http://ipython.org/}} | |||
* | * | ||
* {{cite journal|title=Enhanced Interactive Python with IPython|author=Jeremy Jones|date=27 January 2005|journal=ONLamp.com|url=http://www.onlamp.com/pub/a/python/2005/01/27/ipython.html}} | |||
* | |||
* Several presentations of IPython at Python and scientific conferences are listed at . | |||
* at showmedo | |||
* {{dead link|date=March 2013}} — a set of video tutorials from Ohio Supercomputer Center on Python, including IPython and its parallel computing capabilities. | |||
] | ] | ||
] | ] | ||
] | |||
] | |||
{{free-software-stub}} | |||
] | |||
] |
Latest revision as of 18:05, 20 April 2024
For the implementation of Python under the .NET Framework, see IronPython. Advanced interactive shell for Python
IPython Shell | |
Original author(s) | Fernando Perez |
---|---|
Developer(s) | Brian E. Granger, Min Ragan-Kelley, Paul Ivanov, Thomas Kluyver, Matthias Bussonnier |
Initial release | 2001; 24 years ago (2001) |
Stable release | 8.26.0 / 28 June 2024; 6 months ago (28 June 2024) |
Repository | |
Written in | Python, JavaScript, CSS, HTML |
Operating system | Cross-platform |
Type | Shell |
License | BSD |
Website | ipython |
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
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 JupyterThis section may rely excessively on sources too closely associated with the subject, potentially preventing the article from being verifiable and neutral. Please help improve it by replacing them with more appropriate citations to reliable, independent, third-party sources. (October 2016) (Learn how and when to remove this message) |
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, 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
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.
See also
References
- ^ "The IPython notebook: a historical retrospective". Fernando Perez Blog. 8 January 2012.
- "ipython 8.26.0".
- "NumFOCUS Sponsored Projects". NumFOCUS. Retrieved 25 October 2021.
- Helen, Shen (2014). "Interactive notebooks: Sharing the code". Nature. 515 (7525): 151–152. Bibcode:2014Natur.515..151S. doi:10.1038/515151a. PMID 25373681.
- "Using IPython for Parallel computing - IPython docs".
- ^ "SciPy Stack".
- "Printing — SymPy 1.1 documentation". docs.sympy.org. Retrieved 11 April 2018.
- McKinney, Wes (2012). "Chapter 3". Python for Data Analysis. ISBN 978-1-449-31979-3.
- "Release of IPython 5.0 – Jupyter Blog". Jupyter Blog. 8 July 2016. Retrieved 11 April 2018.
- "Project Jupyter // Speaker Deck".
- "The Notebook, Qt console and a number of other pieces are now parts of Jupyter". GitHub. 17 October 2021.
- "The Big Split™". 28 August 2017.
- "Jupyter Logo · jupyter/Design Wiki". GitHub.
- ^ Somers, James. "The Scientific Paper Is Obsolete". The Atlantic. Retrieved 10 April 2018.
- Koziol, Conrad (12 September 2005). "Introducing IPython". NewsForge. Archived from the original on 7 June 2012. Retrieved 14 June 2012.
- "IPython Presentations".
- Pérez, Fernando; Granger, Brian E. (2007). "IPython: A System for Interactive Scientific Computing" (PDF). Computing in Science & Engineering. 9 (3): 21–29. Bibcode:2007CSE.....9c..21P. doi:10.1109/MCSE.2007.53. S2CID 16637923. Archived from the original (PDF) on 2 June 2010. Retrieved 30 July 2015.
- "Announcement in scipy mailing list". Archived from the original on 5 March 2016. Retrieved 12 December 2012.
- "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". Retrieved 13 August 2015.
- "Recent Software System Award News".
- "Jupyter receives the ACM Software System Award".