Compartiendo Jupyter Notebooks online
May 15, 2019
La ocasión anterior estaba hablando de Jupyter y todas las cosas que nos permite hacer. Tenía un par de años que no utilizaba Jupyter y en volver a utilizarlo encontré Jupyter Lab, que ahora me parece la forma definitiva de utilizar Jupyter; y también encontré Binder Hub que me parece la forma definitiva de compartir notebooks. Entonces ¿Qué son estas cosas?
Jupyter Lab es una interfáz web para utilizar Notebooks. Es parecido a lo que era el Notebook Server, pero es todo un ambiente en le cual puedes usar varias libretas a la vez, con un ecosistema de extensiones y muy fácil de modificar.
Binder… Binder es toda la razón de este post. Binder es eso, una carpeta para tus notebooks. Puede convertir un repositorio de Git (GitHub u otro servicio) en un entorno interactivo de Jupyter Lab! O sea que a quien se lo compartas puede ejecutar tu código, puede experimentar con tus datos, puede hacer todo en vivo, en linea sin instalar o descargar nada, sin preocuparse por dependencias… Es magia… es Docker.
¿Cómo empezar a usar Binder?
El modo más fácil es utilizando MyBinder.org simplemente le puedes dar un repositorio de GitHub y usarlo. Toma en cuenta que estas instrucciones son más útiles en un ambiente de Linux o macOS. Toma en cuenta que debes haber instalado JupyterLab primero y así como Git.
- Vamos a comenzar creando y clonando un nuevo repositorio en GitHub.. Preferentemente llámala notebooks, solo por consistencia.
git clone https://github.com/<tu-nombre-de-usuario>/notebooks.git cd notebooks
- Crea una notebook localmente utilizando Jupyter Notebook Server o JupyterLab. Te recomiendo utilizar Lab porque eventualmente va a reemplazar por completo al servidor de Notebook tradicional.
jupyter notebook # O utilizando lab (mi recomendación) jupyter lab
- En el launcher de JupyterLab escoge
Python 3
puedes hacer lo que quieras con esta libreta.
- Agrega tu nueva libreta a Git. La vas a poder ver en el sitio. Y esta lista para ser utilizada en MyBinder.org
git add --all git commit -a -m "Primera Notebook" git push origin
- En MyBinder.org solo coloca tu nombre de usuario de GitHub y el nombre del repositorio, en mi caso
Darkade/notebooks
. Luego presiona el botón deLaunch
.
Una vez que presiones launch vas a ver una barra que te muestra el progreso del build de tu notebook. Puedes ver los detalles que son los logs de Docker.
-
Una vez que termine de lanzar vas a ver la interfáz del Notebook Server, pero puedes cambiar a Jupyter lab cambiando la parte que dice
tree
de la URL porlab
. Por ejemplohttps://hub.mybinder.org/user/darkade-notebooks-wewgqiuc/lab
(Es posible que es link no te sirva, revisa la sección “Compartiendo Libretas”) -
Puedes abrir cualquiera de tus libretas desde esta nueva página y ejecutar lo que quieras. Los cambios que hagas no son permanentes, porque no estan siendo commiteados a git. Pero si la puedes cambiar y ejecutar sin ninguna herramienta adicional.
Compartiendo Libretas
Justo antes de presionar el botón de Launch
puedes ver la URL adecuada para compartir tu Binder, pero te va a enviar al Notebook Server. Si quieres que redirija directamente a Jupyter Lab agrega ?urlpath=lab
al final de la URL.
Este es link del repositorio de mis notebooks
https://mybinder.org/v2/gh/Darkade/notebooks/master?urlpath=lab
Agregando dependencias a tu Binder
Puedes agregar dependencias a tu Binder utilizando un requirements.txt
Este es un ejemplo del mio:
-i https://pypi.org/simple
appnope==0.1.0 ; sys_platform == 'darwin'
attrs==19.1.0
backcall==0.1.0
bleach==3.1.0
bokeh==1.1.0
Desafortunadamente Binder todavía no soporta Pipfile
pero hay planes para agregar soporte.
También puedes correr algunos otros comandos de setup mediante un archivo postBuild
. El mio instala las extensiones de GeoJSON
jupyter labextension install @jupyterlab/geojson-extension
Si necesitas utilizar cualquiera de estos dos archivos solo colócalos en la raíz de tu repositorio.
Muchas gracias por leer. Espero la próxima vez hablar sober pipenv
que se esta convirtiendo en una herramienta indispensable si utilizas Python. Si quieres seguir leyendo de Jupyter te recomiendo el artículo anterior.
– Anya Reyes