IPython Notebook ejecuta todas las celdas en abierto

Tengo un noteboook de IPython y estoy intentando configurarlo de manera que todas las celdas se ejecuten automáticamente cuando se abre el portátil.

Este comportamiento es diferente de la salida guardada para portátiles que contienen widgets. Los widgets solo parecen procesarse cuando las celdas que los contienen se ejecutan. Considere el siguiente ejemplo:

from IPython.display import display from IPython.html.widgets import IntSlider w = IntSlider() display(w) 

El control deslizante no se muestra hasta que se ejecuta la celda.

¿Es esto algo que se puede lograr a través de Metadatos de Notebook o archivos de configuración?

EDIT: https://try.jupyter.org/ parece estar haciendo algo como esto: Observe que los portátiles no se están ejecutando cuando abre la página y muestra el resultado cuando se abren.

EDIT2: Agregar ejemplo.

Acabo de encontrar una manera de hacer esto con bastante facilidad. Si instala el paquete nbextensions ( https://github.com/ipython-contrib/jupyter_contrib_nbextensions ), una de las extensiones se llama “Celdas de inicialización” y le permite marcar ciertas celdas para que se ejecuten automáticamente cuando se carga el cuaderno.

  1. Pegue el fragmento a continuación en una celda normal (código),
  2. ejecutarlo (presiona [Ctrl + Enter] ), y
  3. Guarda el cuaderno.

La próxima vez que lo (re) cargue, todas las celdas se ejecutarán y se guardará un punto de control con sus resultados actualizados.

 %%html  

Tenga en cuenta que si borra la salida de la celda anterior, debe repetir los pasos 2 y 3.

PROPINA

Puede considerar estas soluciones más apropiadas para lo que probablemente está tratando de lograr:

  • Jupyer Thebe : incrusta fragmentos de código en páginas estáticas que se comunican con los backends de los núcleos ipython.
  • nteract nteract : Construye aplicaciones basadas en Electron desde notebooks.
  • Tableros : los esfuerzos “oficiales” para permitir pre-configurar una cuadrícula de salidas de la celda del portátil (“tableros”), empaquetarlos y servirlos como aplicaciones web independientes.

Puede encontrar un resumen de la situación en este artículo .

Controversia

Preguntas similares se han formulado anteriormente en otros sitios , pero en este hilo de googlegroup , alguien envió una solución, y el moderador del grupo la borró (!) , Obviamente para preservar la vida en la tierra 🙂 Por lo tanto, ¡cuidado con ella!

No creo que esto sea posible.

ipython no ejecuta código a menos que sea 1) intencional y 2) de confianza. De lo contrario, se encontrará con situaciones en las que carga cuadernos que contienen código malicioso.

Puede consultar los detalles del modelo de seguridad de ipythons aquí: https://ipython.org/ipython-doc/dev/notebook/security.html . Específicamente, la sección que habla sobre la ejecución del código al abrir el cuaderno: “El problema de seguridad que debemos resolver es que ningún código debe ejecutarse solo porque un usuario ha abierto un cuaderno que no escribió”

Si bien puede establecer una confianza explícita en un cuaderno, no estoy seguro de si esto también permitirá la ejecución automática de código. No he visto nada por el estilo, pero tal vez no haya estado buscando lo suficiente. Sin embargo, he visto en otros lugares que la ejecución automática de código no es algo que esté disponible en el paquete ipython del núcleo. Compruebe este problema aquí: https://github.com/ivanov/ipython-trainingwheels/issues/35

Más allá de la confianza, otra razón por la que sospecho que esto no es posible es porque 1) la ejecución automática del código reemplazará cualquier salida existente que esté guardada actualmente en el notebook, lo que puede no ser ideal, y 2) algunos notebooks pueden contener código complejo que es computacional caro, que no querría estar ejecutando cada vez que abrió el cuaderno.