Python

Importar un Notebook Python como un archivo py

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

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: Jupyter

Recent Posts

Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato

En la era del dato, las organizaciones se enfrentan al reto de gestionar volúmenes masivos…

2 días ago

Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)

En la serie Creación de una API REST con Express y TypeScript construimos una API…

4 días ago

Curiosidad: El sesgo de supervivencia, o por qué prestar atención sólo a los que “llegaron” puede engañarte

Durante la Segunda Guerra Mundial, la Fuerza Aérea de Estados Unidos quería reforzar sus aviones…

1 semana ago

Cómo abrir una ventana de Chrome con tamaño y posición específicos desde la línea de comandos en Windows

En muchas situaciones —ya sea para grabar un tutorial, tomar capturas de pantalla profesionales, probar…

2 semanas ago

La Paradoja del Cumpleaños, o por qué no es tan raro compartir fecha de nacimiento

Imagínate en una sala con un grupo de personas, por ejemplo, en una oficina, un…

2 semanas ago

Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)

En el trabajo diario con ordenadores, es común encontrarse con tareas repetitivas: realizar copias de…

3 semanas ago

This website uses cookies.