Compartiendo Jupyter Notebooks online

May 15, 2019

My Binder Logo

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.

  1. 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
    
  2. 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
    
  3. En el launcher de JupyterLab escoge Python 3 puedes hacer lo que quieras con esta libreta.

Creando una nueva libreta

  1. 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
    
  2. 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 de Launch. MyBinder.org

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.

  1. 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 por lab. Por ejemplo https://hub.mybinder.org/user/darkade-notebooks-wewgqiuc/lab (Es posible que es link no te sirva, revisa la sección “Compartiendo Libretas”)

  2. 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. JupyterLab en MyBinder.org

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

Compartir una libreta

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.

Dependencias en MyBinder.org


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