# IPython

IPython es un shell interactivo que añade funcionalidades extra al modo interactivo incluido con Python, como resaltado de líneas y errores mediante colores, una sintaxis adicional para el shell, autocompletado mediante tabulador de variables, módulos y atributos; entre otras funcionalidades. Es un componente del paquete SciPy.

## Computación en paralelo Parallel computing

IPython está basado en una arquitectura que suministra computación distribuida y en paralelo. IPython permite la ejecución de aplicaciones en paralelo, pudiéndose estas desarrollar, ejecutar, depurar y ser monitoreadas interactivamente. Es por esto que el nombre de IPython toma la letra I del inicio, como referencia a interactivo. La arquitectura abstrae situaciones en paralelo, lo que permite a IPython dar soporte a múltiples tipos de computación en paralelo. Entre estos se incluyen:
* Paralelismo «un programa, múltiples datos» (SPMD por sus siglas en inglés).
* Paralelismo «múltiples programas, múltiples datos» (MPMD).
* Paso de mensajes usando MPI.
* Paralelismo de control.
* Paralelismo de datos.
* Combinación de las aproximaciones anteriores.
* Aproximaciones personalizables por los usuarios.

## Notebook

El cuaderno Notebook de IPython está basado en la web y es interactivo. Un notebook en IPython es un documento JSON que contiene una lista ordenada de entradas / salidas las cuales pueden tener código, texto, matemáticas, dibujos y rich media. Los notebooks de IPython pueden ser convertidos a otros formatos de archivos como HTML, presentaciones de diapositivas, LaTeX, PDF, Python, etc).

## Proyecto Jupyter

En 2014 Fernando Pérez anunció un proyecto alternativo a IPython llamado Jupyter. IPython seguirá existiendo como un shell de Python y como kernel para Jupyter, mientras que el notebook y otras partes de IPython pasarán a formar parte del proyecto Jupyter. Jupyter añadió soporte para Julia, R, Haskell y Ruby al notebook

## Otras características

IPython incluye además una versión en GNU/Linux para ser ejecutado en X y usando la biblioteca wxWidgets. En el uso de bibliotecas GUI, IPython no permite el bloqueo en la interacción con Tkinter, GTK+, Qt ni wxWidgets; solo permite la interacción con Tkinter. Ipython puede gestionar de forma interactiva el uso paralelo de varios clústeres. IPython puede ser utilizado para reemplazar el shell de sistema gracias a lo flexible y modificable que es mediante su archivo de configuración, especialmente en windows. El shell de IPython recuerda a un shell de unix, e incluso permite usar comandos bash durante su uso para, por ejemplo, cambiar de directorio de trabajo.

## En los medios de comunicación

IPython ha sido mencionado en prensa del ámbito informático, y en conferencias del mundo científico. IPython es considerado como una herramienta para el trabajo científico, y frecuentemente ha sido presentado junto con Matplotlib

## Fin de la compatibilidad con Python 2

La serie IPython 5.x (Long Time Support) es la última versión de IPython compatible con Python 2. El proyecto IPython se comprometió a no admitir Python 2 después de 2020 al ser uno de los primeros proyectos en unirse a la Declaración de Python 3, el La serie 6.x solo es compatible con Python 3 y versiones posteriores. Sin embargo, todavía es posible ejecutar un kernel IPython y un servidor Jupyter Notebook en diferentes versiones de Python, lo que permite a los usuarios acceder a Python 2 en la versión más reciente de Jupyter.

## Proyecto Jupyter

En 2014, Fernando Pérez anunció un proyecto derivado de IPython llamado Project Jupyter. IPython continuó existiendo como un shell y kernel de Python para Jupyter, pero la interfaz del notebook y otras partes independientes del lenguaje de IPython se movieron bajo el nombre de Jupyter. Jupyter es independiente del lenguaje y su nombre es una referencia a los lenguajes de programación centrales compatibles con Jupyter, que son Julia, Python y R.
Jupyter Notebook (anteriormente IPython Notebooks) es un entorno computacional interactivo basado en web para crear, ejecutar y visualizar cuadernos de Jupyter. Es similar a la interfaz de cuaderno de otros programas como Maple, Mathematica y SageMath, un estilo de interfaz computacional que se originó con Mathematica en la década de 1980. Admite entornos de ejecución (también conocidos como núcleos) en docenas de idiomas. De forma predeterminada, Jupyter Notebook se envía con el kernel de IPython, pero hay más de 100 kernels de Jupyter a partir de mayo de 2018.