Importar un Notebook Python como un archivo py

Publicado el 21 marzo 2022 por Daniel Rodríguez @analyticslane

Reutilizar el código que se ha escrito en un archivo py es tremendamente sencillo, solamente se tiene que usar la instrucción import seguida del nombre de este. Un método que no funciona en el caso de los Notebooks. Afortunadamente, para solucionar este problema y facilitar la reutilización de nuestras funciones se puede recurrir al paquete ipynb. Gracias al cual se pueden importar un Notebook Python en otro, o en código Python, de una manera similar a cómo se hace para los py.

Instalación de ipynb

Antes de poder usar las funcionalidades del paquete ipynb es necesario instalarlo en nuestro sistema. Para lo que se puede recurrir, como es habitual, a pip y escribir el siguiente comando en una terminal

pip install ipynb

A partir de este momento ya podremos importar todo el contenido de otros Notebooks o solamente algunas funciones o clases de este.

Importar todo el contenido del Notebook

En el caso de que se disponga de un Notebook llamado notebook.ipynb y se quiere importar íntegramente, esto es, ejecutar todo el contenido y cargar las funciones, clases y variables se puede mediante un import. Para ello se debe escribir import ipynb.fs.full. seguido del nombre del archivo sin la extensión. Para el archivo del ejemplo se debería escribir lo siguiente

import ipynb.fs.full.notebook

Si no se desea importar todo el contenido se puede emplear la construcción from ... import e indicar los recursos que se desean importar

from ipynb.fs.full.notebook import my_function, MyClass

Es importante recordar que en ambos casos se ejecutará todo el código de Notebook, algo que en muchas ocasiones puede no ser necesario ni eficiente. Por lo que también es posible importar solamente las definiciones.

Importar las definiciones de Notebook en Python

Para el caso en el que solamente se desee importar las definiciones, esto es, las funciones, clases o importaciones, se puede hacer como anteriormente reemplazando full por defs. Así lo que se debería escribir es import ipynb.fs.defs. seguido del nombre del archivo. En el caso de nuestro Notebook de ejemplo sería

import ipynb.fs.defs.notebook

O en el caso de querer importar solamente algunos recursos

from ipynb.fs.defs.notebook import my_function, MyClass

Conclusiones

En esta ocasión se ha visto cómo se puede importar un Notebook Python de una forma similar a la forma que se hace con archivos py. Para lo que solamente hay que importar un paquete. Posiblemente una solución alternativa a esta sea exportar el contenido del Notebook a un archivo py e importarlo desde ahí. Aunque se pierde flexibilidad ya que después de cada cambio en el documento original es necesario hacer una nueva exportación.

Imagen de jplenio en Pixabay