En una ocasión había preguntado en el blog acerca de cómo se podía convertir el contenido de un Notebook en un archivo de Python. Operación necesaria, por ejemplo, en el caso de que se desee poner en producción los desarrollos realizados. Afortunadamente los Notebooks de Jupyter ofrecen la posibilidad de exportar el contenido en texto plano, conservando las celdas de Markdown como comentarios. Funcionalidad con la que es posible crear archivos tanto de Python, como Julia o R, dependiendo del núcleo que se esté usando. Aunque esta funcionalidad puede ser un poco limitada. Para estos casos se puede instalar la extensión jupytext
con la que se obtienen unas funcionalidades interesantes.
Cómo guardar un Notebook en un archivo de Python con Jupyter
Una vez creado un Notebook, si queremos guardar el contenido de este como un archivo de Python simplemente hay que ir al menú File > Download as > Python (.py) de Jupyter para descargarlo. Función en la que también se pueden encontrar otras opciones interesantes como puede ser HTML, Markdown o PDF, para compartir los Notebooks con usuarios que no necesitan editarlos.
Esta funcionalidad nativa de Jupyter es más que suficiente en la mayoría de los casos. Obteniendo como resultado un archivo con el código ejecutable y las celdas Markdown en forma de comentarios en los mismos.
Opciones avanzadas con el complemento jupytext
Para aquellos casos en los que la funcionalidad por defecto que ofrece Jupyter no es suficiente se puede recurrir a jupytext
. Un complemento que se debe instalar en nuestro sistema.
Instalación de jupytext
El paquete jupytext
se puede instalar utilizando tanto pip como conda, en el caso de que nos decantemos por pip se debe usar.
pip install jupytext
Por otro lado, si se prefiere conda el comando que se debe ejecutar es:
conda install jupytext -c conda-forge.
Ahora, la próxima vez que se reinicie el servidor de Jupyter aparecerán un nuevo submenú Jupytext debajo del menú File.
Emparejar el Notebook con un archivo Python
La funcionalidad más destacada de este complemento es la posibilidad de emparejar el Notebook con otros archivos. Algo va mucho más allá de generar un archivo Python. Cuando se activa esta opción, cada vez que se modifique el contenido del Notebook o del archivo Python los cambios se verán representados en el otro archivo. Algo que puede ser muy interesante para editar el código con un editor externo o para guardar los progresos en un sistema de control de cambios como Git.
Cuando se activa la opción que se encuentra en el menú File > Jupytext > Pais Notebook with light Script se obtiene un script Python con el mismo nombre del Notebook. En el caso de que se modifique el Notebook, cuando se guarde este, los cambios se verán reflejados también en el script. Por otro lado, si se realizan cambios en el script, estos se verán reflejados en Notebook cuando se recargue el mismo. Funcionalidad que puede ser de interés en muchos casos.
Conclusiones
En esta entrada se han visto dos opciones disponibles para guardar un Notebook en un archivo de Python. Para la mayoría de los casos la funcionalidad nativa de Jupyter puede ser más que suficiente. Pero, en el caso de que necesitemos sincronizar el contenido del Notebook con el archivo Python el complemento jupytext
soluciona este problema.
Imagen de Bruno /Germany en Pixabay