¿Cómo ejecutar un .ipynb Jupyter Notebook desde la terminal?


160

Tengo un código en un archivo .ipynb y lo llegué al punto en el que realmente no necesito la función "interactiva" de IPython Notebook. Me gustaría ejecutarlo directamente desde una línea de comandos de la terminal Mac.

Básicamente, si esto fuera solo un archivo .py, creo que podría hacer python filename.py desde la línea de comandos. ¿Hay algo similar para un archivo .ipynb?


Algo como esto: github.com/paulgb/runipy ?
idjaw

Algo como eso. Tengo algunas inputdeclaraciones en mi cuaderno de ipython, y parece tener problemas con estas
Vincent

Respuestas:


107

Desde la línea de comandos, puede convertir una computadora portátil a Python con este comando:

jupyter nbconvert --to python nb.ipynb

https://github.com/jupyter/nbconvert

Puede que tenga que instalar el paquete python mistune :

sudo pip install -U mistune

14
El subcomando ipython nbconvertestá en desuso a favor de jupyter nbconvert
PenguinEngineer

66
No creo que esta respuesta sea correcta. Me doy cuenta de que funciona, pero la pregunta es cómo ejecutar .ipynb desde la terminal, no cómo convertirlo en un .py y luego ejecutarlo.
Giacomo

3
Nbconvert fallará si alguna celda tarda más de 30 segundos en ejecutarse, es posible que desee agregar --ExecutePreprocessor.timeout=600.
bckygldstn

Las últimas actualizaciones hacen que funcione así, obtienes un HTML del archivo del cuadernojupyter-nbconvert --execute 03-Print\ Formatting\ with\ Strings.ipynb
b-ak

160

nbconvert le permite ejecutar cuadernos con la --executebandera:

jupyter nbconvert --execute <notebook>

Si desea ejecutar un bloc de notas y producir uno nuevo, puede agregar --to notebook:

jupyter nbconvert --execute --to notebook <notebook>

O si desea reemplazar el portátil existente con el nuevo resultado:

jupyter nbconvert --execute --to notebook --inplace <notebook>

Como es un comando realmente largo, puede usar un alias:

alias nbx="jupyter nbconvert --execute --to notebook"
nbx [--inplace] <notebook>

1
Esto parece no funcionar detrás del entorno virtual de conda
Ramesh-X

9
Esto convierte el cuaderno en una página HTML estática
Jim Daniël Teunis

3
La documentación o esto y las formas programáticas de ejecutar portátiles se pueden encontrar en nbconvert.readthedocs.io/en/latest/…
TomDotTom

¿Hay alguna manera de especificar qué celdas ejecutar? Por ejemplo, la celda 10 y todas las siguientes, o un rango de celda 10 a celda 20.
Al Conrad

2
Además, si tiene celdas de larga ejecución, puede configurar --ExecutePreprocessor.timeout=[timeout_in_seconds] (usar-1 sin restricción).
Zaccharie Ramzi

38

Puede exportar todo su código .ipynby guardarlo como un .pyscript. Luego puede ejecutar el script en su terminal.

muestra de exportación de código

Espero eso ayude.


Esta respuesta (y)
ColinMac

3
no responde la pregunta original
baxx

14

En su Terminal ejecute ipython:

ipython

luego localice su script y póngalo allí:

%run your_script.ipynb

¿Cómo se puede poner esto en un script de shell?
Baxx

1
Esta es la respuesta más práctica.
Ed Williams

10

Para nueva versión en lugar de:

ipython nbconvert --to python <YourNotebook>.ipynb

Puede usar jupyter instend de ipython:

jupyter nbconvert --to python <YourNotebook>.ipynb

¿Cómo es esto una respuesta a la pregunta?
baxx

4

Actualización con comentario citado por el autor para una mejor visibilidad:

Nota del autor "Este proyecto comenzó antes de la API de ejecución de Jupyter, que ahora es la forma recomendada de ejecutar cuadernos desde la línea de comandos. Considere runipy obsoleto y sin mantenimiento". - Sebastián Palma

Instale la biblioteca runipy que le permite ejecutar su código en la terminal

pip install runipy

Después de solo compilar su código:

runipy <YourNotebookName>.ipynb

Puedes probar cronjob también. Toda la información está aquí


11
Nota del autor "Este proyecto comenzó antes de la API de ejecución de Jupyter, que ahora es la forma recomendada de ejecutar cuadernos desde la línea de comandos. Considere runipy obsoleto y sin mantenimiento".
Sebastian Palma

3

En mi caso, el comando que más me convenía fue:

jupyter nbconvert --execute --clear-output <notebook>.ipynb

¿Por qué? Este comando no crea archivos adicionales (como un .pyarchivo) y la salida de las celdas se sobrescribe cada vez que se ejecuta el cuaderno.

Si tu corres:

jupyter nbconvert --help

- salida clara Borra la salida del archivo actual y la guarda en su lugar, sobrescribiendo la libreta existente.


0

También puede usar el boarpaquete para ejecutar su computadora portátil dentro de un código de Python.

from boar.running import run_notebook

outputs = run_notebook("nb.ipynb")

Si actualiza su computadora portátil, no tendrá que convertirla nuevamente a un archivo python.


Mas información en:

https://github.com/alexandreCameron/boar/blob/master/USAGE.md


0

Desde la terminal corre

jupyter nbconvert --execute --to notebook --inplace --allow-errors --ExecutePreprocessor.timeout=-1 my_nb.ipynb

El tiempo de espera predeterminado es de 30 segundos. -1 elimina la restricción.

Si desea guardar el cuaderno de salida en un cuaderno nuevo, puede usar la bandera --output my_new_nb.ipynb


0

Tuve el mismo problema y encontré fábrica de papel . Las ventajas con respecto a las otras soluciones es que puede ver los resultados mientras se ejecuta el portátil. Encuentro esta característica interesante cuando el portátil tarda mucho. Es muy fácil de usar:

pip install papermill
papermill notebook.ipynb output.ipynb

También tiene otras opciones útiles como guardar el archivo de salida en Amazon S3, Google Cloud, etc. Consulte la página para obtener más información.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.