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.
Germán Cifuentes Contreras dice
Muchas gracias, muy buen artículo, los ejemplos claros, me funcionó perfectamente.
Atento saludo,
Humberto dice
Quiero tener un file de funciones definidas y correrlas en una sola linea desde otra nb, por alguna razon no me esta funcionando esto
Daniel Rodríguez dice
El error se puede deber a múltiples motivos, sin más información es difícil saber cuál es la causa del fallo.