¿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?

Vincent
fuente
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
ditkin
fuente
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>
minrk
fuente
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.

pdm
fuente
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
Martin Ptacek
fuente
¿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
Vijay Panchal
fuente
¿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í

Eje
fuente
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.

alejandro
fuente
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

Alex
fuente
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

Mohammad S
fuente
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.

pglez82
fuente