Cómo configurar Jupyter Notebook con Python 3 en Ubuntu 18.04


Los Jupyter Notebooks (o simplemente Notebooks) son documentos producidos por la aplicación Jupyter Notebook que contienen código de ordenador y elementos de texto enriquecido (párrafo, ecuaciones, figuras, enlaces, etc.) que ayudan a presentar y compartir investigaciones reproducibles. Precisamente la aplicación web de código abierto, Jupyter Notebook le permite crear y compartir código interactivo, visualizaciones y más. Además, esta herramienta se puede utilizar con varios lenguajes de programación, incluidos Python, Julia, R, Haskell y Ruby. Ciertamente tal repercusión ha tenido esta herramienta que a menudo se usa para trabajar con datos, modelado estadístico y aprendizaje automático.

Este post le guiará a través de la configuración de Jupyter Notebook para que se ejecute desde un servidor Ubuntu 18.04, y también se mostrará cómo conectarse y usar el notebook. Al final de este post, podrá ejecutar el código de Python 3 con Jupyter Notebook ejecutándose en un servidor remoto. Para completar este post, debe tener una instancia de servidor Ubuntu 18.04 nueva con un firewall básico y un usuario no root con privilegios de sudo configurados. 

Configurar Python

Para comenzar el proceso, instalaremos las dependencias que necesitamos para nuestro entorno de programación Python desde los repositorios de Ubuntu. Ubuntu 18.04 viene preinstalado con Python 3.6. Usaremos el pip del administrador de paquetes de Python para instalar componentes adicionales un poco más tarde.

Primero necesitamos actualizar el índice apt del paquete local y luego descargar e instalar los paquetes:

sudo apt update 

A continuación, instale pip y los archivos de encabezado de Python, que utilizan algunas de las dependencias de Jupyter:

sudo apt install python3-pip python3-dev 

Ahora podemos pasar a configurar un entorno virtual de Python en el que instalaremos Jupyter.

Crear un entorno virtual de Python para Jupyter

Ahora que tenemos Python 3, sus archivos de encabezado y pip listos para usar, podemos crear un entorno virtual de Python para administrar nuestros proyectos. Instalaremos Jupyter en este entorno virtual.

Para hacer esto, primero necesitamos acceder al comando virtualenv que podemos instalar con pip.

Actualice pip e instale el paquete escribiendo:

sudo -H pip3 install --upgrade pip sudo -H pip3 install virtualenv 

El indicador-H garantiza que la política de seguridad establezca la variable home de entorno en el directorio de inicio del usuario de destino.

Con virtualenvinstalado, podemos empezar a formar nuestro entorno. Cree y muévase a un directorio donde podamos guardar nuestros archivos de proyecto. Lo llamaremos my_project_dir, pero debe usar un nombre que sea significativo para usted y para lo que está trabajando.

mkdir ~/my_project_dir cd ~/my_project_dir 

Dentro del directorio del proyecto, crearemos un entorno virtual de Python. Al final de este post, lo llamaremos, my_project_envpero debe llamarlo de alguna manera que sea relevante para su proyecto.

virtualenv my_project_env 

Esto creará un directorio llamado my_project_env dentro de su directorio my_project_dir. En el interior, instalará una versión local de Python y una versión local de pip. Podemos usar esto para instalar y configurar un entorno Python aislado para Jupyter.

Antes de instalar Jupyter, debemos activar el entorno virtual. Puede hacerlo escribiendo:

source my_project_env/bin/activate 

Su mensaje debería cambiar para indicar que ahora está operando dentro de un entorno virtual de Python. Se verá algo como esto: .(my_project_env)user@host:~/my_project_dir$

Ahora está listo para instalar Jupyter en este entorno virtual.

Instalar Jupyter

Con su entorno virtual activo, instale Jupyter con la instancia local de pip.

Nota: Cuando el entorno virtual está activado (cuando su solicitud precede amy_project_env), use pip en lugar de pip3, incluso si está usando Python 3. La copia de la herramienta del entorno virtual siempre se denomina pip, independientemente de la versión de Python.

pip install jupyter 

En este punto, ha instalado con éxito todo el software necesario para ejecutar Jupyter. Ahora podemos iniciar el servidor de Notebook.

Ejecutar Jupyter Notebook

¡Ahora tiene todo lo que necesita para ejecutar Jupyter Notebook! Para ejecutarlo, ejecute el siguiente comando:

jupyter notebook 

Se imprimirá un registro de las actividades de Jupyter Notebook en el terminal. Cuando ejecute Jupyter Notebook, se ejecuta en un número de puerto específico. El primer cuaderno que ejecute normalmente utilizará el puerto 8888. Para comprobar el número de puerto específico en el que se ejecuta Jupyter Notebook, consulte el resultado del comando utilizado para iniciarlo:


         
          Output
         [I 21:23:21.198 NotebookApp] Writing notebook server cookie secret to /run/user/1001/jupyter/notebook_cookie_secret
[I 21:23:21.361 NotebookApp] Serving notebooks from local directory: /home/sammy/my_project_dir
[I 21:23:21.361 NotebookApp] The Jupyter Notebook is running at:
[I 21:23:21.361 NotebookApp] http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72
[I 21:23:21.361 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[W 21:23:21.361 NotebookApp] No web browser found: could not locate runnable browser.
[C 21:23:21.361 NotebookApp]

    Copy/paste this URL into your browser when you connect for the first time,
    to login with a token:
        http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72

Si está ejecutando Jupyter Notebook en un ordenador (no en un servidor), puede navegar a la URL que se muestra para conectarse a Jupyter Notebook. Si está ejecutando Jupyter Notebook en un servidor, deberá conectarse al servidor mediante túneles SSH como se describe mas adelante.

En este punto, puede mantener abierta la conexión SSH y seguir ejecutando Jupyter Notebook o puede salir de la aplicación y volver a ejecutarla una vez que haya configurado el túnel SSH. Elijamos detener el proceso de Jupyter Notebook pues lo ejecutaremos nuevamente una vez que hayamos configurado el túnel SSH. 

Para detener el proceso de Jupyter Notebook, presione CTRL+C, escriba Y y luego ENTER para confirmar. Se mostrará la siguiente salida:


         
          Output
         [C 21:28:28.512 NotebookApp] Shutdown confirmed
[I 21:28:28.512 NotebookApp] Shutting down 0 kernels

Ahora configuraremos un túnel SSH para que podamos acceder al Notebook.

Conexión al servidor mediante túneles SSH

Ahora vamos a ver cómo conectarnos a la interfaz web de Jupyter Notebook mediante túneles SSH pues dado que Jupyter Notebook se ejecutará en un puerto específico del servidor (como , por ejemplo :8888:8889etc.), el túnel SSH le permite conectarse al puerto del servidor de forma segura. A continuación vamos a ver cómo crear un túnel SSH desde Mac o Linux y Windows.

Tunelización SSH con Mac o Linux

Si usa Mac o Linux, los pasos para crear un túnel SSH son similares a usar SSH para iniciar sesión en su servidor remoto, excepto que hay parámetros adicionales en el comando ssh.  Ahora vamos a ver los parámetros adicionales necesarios en el comando ssh para tunelizar con éxito.

La tunelización SSH se puede realizar ejecutando el siguiente comando SSH en una nueva ventana de terminal local:

ssh -L 8888:localhost:8888 your_server_username@your_server_ip 

El comando ssh abre una conexión SSH, pero -L especifica que el puerto dado en el host local (cliente) se reenviará al host y puerto dados en el lado remoto (servidor). Esto significa que cualquier cosa que se esté ejecutando en el segundo número de puerto (por ejemplo 8888 ), en el servidor aparecerá en el primer número de puerto (por ejemplo 8888 ) en su ordenador local.

Opcionalmente, cambie el puerto 8888a uno de su elección para evitar usar un puerto que ya está en uso por otro proceso.

server_username es su nombre de usuario (por ejemplo sammy) en el servidor que creó y your_server_ip es la dirección IP de su servidor.

Por ejemplo, para el nombre de usuario sammy y la dirección del servidor 203.0.113.0, el comando sería:

ssh -L 8888:localhost:8888 [email protected] 

Si no aparece ningún error después de ejecutar el comando ssh -L, puede pasar a su entorno de programación y ejecutar Jupyter Notebook:

jupyter notebook 

Recibirá resultados con una URL, de modo que vaya desde un navegador web en su máquina local y abra la interfaz web de Jupyter Notebook con la URL que comienza con http://localhost:8888. Asegúrese de incluir el número de token o ingrese la cadena del número de token cuando se le solicite en http://localhost:8888.

Tunelización SSH con Windows y Putty

Si está usando Windows, puede crear un túnel SSH usando Putty . Primero, ingrese la URL del servidor o la dirección IP como el nombre de host como se muestra:

Establecer nombre de host para túnel SSH

A continuación, haga clic en SSH en la parte inferior del panel izquierdo para expandir el menú y luego haga clic en Túneles . Ingrese el número de puerto local que desea usar para acceder a Jupyter en su máquina local. Elija 8000 o mayor para evitar los puertos utilizados por otros servicios y establezca el destino como donde está el número del puerto en el que se ejecuta Jupyter Notebook.localhost:8888:8888

Ahora haga clic en el botón Agregar y los puertos deberían aparecer en la lista de puertos reenviados :

Lista de puertos reenviados

Finalmente, haga clic en el botón Abrir para conectarse al servidor a través de SSH y canalizar los puertos deseados. Navegue a (o al puerto que elija) en un navegador web para conectarse a Jupyter Notebook que se ejecuta en el servidor. Asegúrese de incluir el número de token o ingrese la cadena del número de token cuando se le solicite en .http://localhost:8000

Uso de Jupyter Notebook

 Si actualmente no tiene Jupyter Notebook ejecutándose, inícielo con el  comando jupyter notebook. Ahora debería estar conectado a él usando un navegador web. Jupyter Notebook es una herramienta muy poderosa con muchas características. Veamos algunas de las funciones básicas para que pueda comenzar a utilizar esta fantástica herramienta.

 Jupyter Notebook mostrará todos los archivos y carpetas en el directorio desde el que se ejecuta, por lo que cuando esté trabajando en un proyecto, asegúrese de iniciarlo desde el directorio del proyecto.

Para crear un nuevo archivo de Notebook, seleccione Nuevo > Python 3 en el menú desplegable superior derecho:

Crear un nuevo cuaderno de Python 3

Como vemos, esto abrirá un cuaderno. Ahora podemos ejecutar el código de Python en la celda o cambiar la celda a Markdown. Por ejemplo, cambie la primera celda para aceptar Markdown haciendo clic en Celda > Tipo de celda > Markdown en la barra de navegación superior. Ahora podemos escribir notas usando Markdown e incluso incluir ecuaciones escritas en LaTeX colocándolas entre los $$símbolos. Por ejemplo, escriba lo siguiente en la celda después de cambiarla a Markdown:

# First Equation

Let us now implement the following equation:
$$ y = x^2$$

where $x = 2$

Para convertir la reducción en texto enriquecido, presione CTRL+ENTER y los siguientes deberían ser los resultados:

resultados de rebajas

Puede usar las celdas de descuento para tomar notas y documentar su código. Implementemos esa ecuación e imprimamos el resultado. Haga clic en la celda superior, luego presione ALT+ENTER para agregar una celda debajo e ingrese el siguiente código en la nueva celda.

x = 2
y = x**2
print(y)

Para ejecutar el código, presione  el botono de RUN o simplemente CTRL+ENTER y eecibirá los siguientes resultados:

resultados de la primera ecuacion

Resumen

Como hemos visto Jupyter Notebook se basa en el lenguaje de programación Python, aunque también es compatible con otros lenguajes de programación como R, Julia y Scala permitiendo ejecutar código en tiempo real y ver los resultados de inmediato, lo que lo hace muy útil para la enseñanza, la investigación y el análisis de datos.

Algunas de las características principales de Jupyter Notebook esbozadas en este post son:

  • Permite integrar código, texto, imágenes y visualizaciones en un solo documento.
  • Permite trabajar con datos en vivo, lo que significa que los usuarios pueden explorar y analizar conjuntos de datos en tiempo real.
  • Permite crear gráficos y visualizaciones interactivas.
  • Permite compartir y colaborar con otros usuarios, lo que lo hace muy útil para trabajos en equipo o para la enseñanza.

En resumen, Jupyter Notebook es una herramienta muy útil para explorar y analizar datos, crear informes interactivos y colaborar con otros usuarios. ¡Ahora tiene la capacidad de importar módulos y usar Notebook como lo haría con cualquier otro entorno de desarrollo de Python!

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.