
![]()
![]()



![]()





Inicialmente estas fueron las notas sobre la configuración y uso de Jupyter Lab, que después se amplió a los originales notebooks y a algunas implementaciones o plataformas más. Conforme el ecosistema creció, páginas adicionales y dedicadas fueron creadas, dejando nuevamente a ésta como exclusivamente dedicada a Jupyter Lab y Notebook.
Índice
- Instalación y actualización
- Uso
- Arranque
- Notas diversas
- Kernels
- VS Code
- Plug-ins
- Troubleshooting
Introducción
El Proyecto Jupyter1 nació del proyecto IPython. A medida que el proyecto evolucionó, el concepto giró y giró, hasta convertirse en algo que podía soportar múltiples lenguajes. Hoy, creo yo, es toda una tecnología por derecho propio. Como recordatorio, el nombre Jupyter es un acrónimo indirecto de los tres lenguajes principales para los que fue inicialmente pensado: JUlia, PYThon y R.
Inicialmente, la interfaz o el formato que hoy llamamos de «libreta» Jupyter Lab es la evolución del proyecto en un entorno de desarrollo interactivo basado en web para libretas, código y datos de Jupyter. Además es extensible y modular mediante complementos que se agregan o se integran con los ya existentes, o a nuevos componentes que han venido apareciendo.
Se trata de una nueva forma de generar notas y experimentar con estos tres lenguajes de programación de una forma en la que se acerca mucho a la elaboración de cuadernos de apuntes. Incluso es factible concebir el prototipado de aplicaciones de una forma nueva y diferente. Estos apuntes no es para esto último sino sobre la instalación, configuración y uso de esta plataforma.
1. Instalación y actualización
Existen varias formas de instalar las aplicaciones del proyecto Jupyter, las aquí indicadas son las más comunes y probadas.
1.1. Jupyter notebooks
La aplicación web original para crear los documentos conocidos como Jupyter Notebook se pueden instalar con:
$ pip install notebook
1.2. Jupyter Lab
Para instalar Jupyter Lab, empleando, por ejemplo, pip o conda:
$ pip install jupyterlab
o
$ conda install jupyterlab
1.3. Actualización
La actualización de los componentes Jupyter debe hacer en forma consistente con la instación.Si fueron instalados con conda deberá usarse conda, si fueron instralados con pip debe usarse pip. Por ejemplo
$ pip install --upgrade jupyterlab
2. Uso
Aquí, algunas notas en cuanto al uso o curiosidades de esta plataforma. Por el momento sin ningún orden o clasificación.
2.1. Arranque
Regularmente el navegador por defecto abrirá con la interfaz de inicio para Jupyter Notebook o Jupyter Lab, dependiendo como se invoque. Después de instalarlo bastará ejecutar cada uno de estos, respectivamente, desde la línea de comando con jupyter notebook o jupyter lab para levantar un web server que por defecto atiende las solicitudes en el puerto 8888. Al final del arranque, el web server mostrará las instrucciones para acceder al entorno de las libretas (los notebooks) mediante una dirección a acceder desde un navegador de Internet, por ejemplo:
To access the notebook, open this file in a browser:
file:///home/evasd/.local/share/jupyter/runtime/nbserver-101-open.html
Or copy and paste one of these URLs:
http://localhost:8888/?token=e8605db6f3f7ffc1143ffe7e29ac40a02f9f5592479fddfb
or http://127.0.0.1:8888/?token=e8605db6f3f7ffc1143ffe7e29ac40a02f9f5592479fddfb
Usualmente, se activará el browser y se abrirá la página principal de la interfaz de Jupyter pero hay ocasiones en las que en algunos sistemas operativos deben hacerse algunas acciones de configuración para que sea automático.
2.2. Notas diversas
2.2.1 Editando una libreta en dos vistas
Muy útil para comparar (lado a lado, side-by-side) resultados desplegados en diferentes celdas de un notebook. Click derecho sobre la pestaña (tab) para desplegar el menú contextual. Seleccionar New View for Notebook. Una nueva pestaña será abierta.

2.2.2. Renombrando una libreta

2.2.3. Como personalizar los atajos de teclado


2.2.4. ¿Password?
2.2.5. Indentando un bloque de código en una celda
Tab para indentar, Shift + Tab para «desindentar».
2.3. Kernels
Un kernel es un programa que se encarga de ejecutar código (instrucciones) escritas en un lenguaje en particular; es un «motor» o «máquina» que permite obtener lo que expresamos en un determinado lenguaje de programación. Algunos de estos «motores» se incluyen cuando se instala la aplicación, intérprete o entorno de programación (o desarrollo) de dicho lenguaje para que pueda ser agregado al entorno de Jupyter si así se requiere; algunos otros deben ser descargados expresamente para ser agregados (ver ejemplos en las secciones de cada lenguaje que se listan más abajo).
Jupyter incluye instrucciones que pueden ayudar a instalar kernels sin la necesidad de tener que previamente descargar ese intérprete o entorno del lenguaje de programación o para agregar versiones de éstos. En general, las instrucciones de Jupyter para lo anterior su administración son:
jupyter kernelspec listpara listar los kernels instalados.jupyter kernelspec removepara quitar un kernel.
En general, la remoción de un kernel es en orden inverso a como se llevo a cabo la instalación. Así, en el entorno donde se va a eliminar el kernel hacer:
- Revisar los kernels instalados para validar el nombre del que se desinstalará:
jupyter kernelspec list - Usar
jupyter kernelspec remove <kernel_name>ojupyter kernelspec uninstall <kernel_name>para deregistrar el kernel de Jupyter.- Para el caso de que se trate de un kernel de R, adicionalmente, en la consola de R:
remove.packages("IRkernel"). - Para el caso de Julia, dentro del REPL, usar
using PkgyPkg.rm("IJulia").
- Para el caso de que se trate de un kernel de R, adicionalmente, en la consola de R:
2.3.1. Python
Para el caso de Python, cuando se instalan los Jupyter notebooks o Jupyter Lab un kernel de Python es instalado también (ipython y ipykernel). Ahora, pueden haber ciertas consideraciones a tener presentes cuando se trabaja con un administrador de entornos virtuales como es conda o virtualenv. Téngase presente lo siguiente:
a) Al crear el correspondiente entorno (en los siguientes ejemplos «entorno» debe substituirse por el nombre del entorno que se quiere crear) para una versión en particular de Python, por ejemplo, con virtualenv:
$ python virtualenv entorno -p python3
o en el caso de conda:
$ conda create -n entorno python=3.8
establecemos la versión de Python con la que queremos trabajar y por ende la versión y kernel para iPython cuando se instale Jupyter.
b) Si por alguna razón ipykernel no se instalara (o se tuviera que reinstalar) esto puede hacerse con el comando pip. Si se está trabajando con un administrador de entornos, activar el entorno y en éste proceder con la instalación (para el caso de [Ana|Mini] conda se puede hacer con el comando conda en lugar de pip).
$ pip install ipykernel
c) Para que el kernel esté disponible dentro de Jupyter, puede ser necesario registrarlo (en el ejemplo, sólo para el usuario actual):
$ python -m ipykernel install --user --name entorno --display-name "el nombre de mi entorno"
d) Finalmente, para remover un kernel, por ejemplo:
$ ipython kernel remove nombre-del-kernel
2.3.2. R
Aunque he visto varias referencias señalando que un kernel de R puede ser instalado haciendo uso de Conda en un entorno virtual, lo cierto es que por el momento ninguna me ha funcionado. Por otra parte, creo que, de debe haber un sitio del cual se deba descargar un kernel de R debe ser de dicho proyecto. Así que por el momento, ya sea desde la consola de R Studio o desde la consola de R activada desde la línea de comando:
- Se instala el kernel de R con el comando:
install.packages("IRkernel") - Se registra el kernel ante Jupyter:
IRkernel::installspec(). Esta acción requiere que previamente se haya instalado Jupyter en el entorno de Python que se estará usando (puede ser a nivel del sistema, del usuario o de un entorno virtual; ver página de R de este sitio para detalles sobre posibles mensajes de error en este comando).
Después de esto el kernel de R deberá estar disponible para crear notebooks en Jupyter.
2.3.4. Julia
2.3.4.1. Instalación
Para el caso de Julia, después de descargar la aplicación de su entorno, uno debe descargar el paquete IJulia y agregarlo:
julia> using Pkg
julia> Pkg.add("IJulia")
Si posteriormente uno cambia la instalación o localidad del Julia y se actualiza la variable PATH, uno deberá «reconstruir» el kernel regsitrado:
julia> Pkg.build("IJulia")
2.3.4.2 Actualización
En caso de requerirse la actualización del kernel, esto puede ser a través del programa de actualización de Julia. La necesidad de actualización puede ser detectada y reportada al arrancar el servidor. Por ejemplo:
The latest version of Julia in the `release` channel is 1.10.2+0.aarch64.apple.darwin14. You currently have `1.10.1+0.aarch64.apple.darwin14` installed. Run:
juliaup update
to install Julia 1.10.2+0.aarch64.apple.darwin14 and update the `release` channel to that version.
Puede verse en el mensaje la indicación de la instrucción a usar, juliaup update.
2.3.5. Otros kernels
Actualmente hay muchos, muchos kernels disponibles para Jupyter, hay una página en este proyecto que mantiene una lista de ellos.
2.4. Visual Studio Code
VS Code permite ejecutar Jupyter notebooks con la ayuda de algunas extensiones5.
2.5. Plug-ins
Esta es una breve lista de extensiones que se han probado.
Muestra «en vivo» el tiempo de ejecución de una celda.
$ pip install jupyterlab_execute_time
Instala el soporte para la codificación asistida con un LLM, así como los modelos a usar. La instalación mínima es como se muestra a continuación pero conviene leer la documentación del complemento para entender la adecuada instalación y uso del plug-in.
$ pip install jupyter-ai
Permite integrar la funcioalidad de Git con el entorno de la libretas Jupyter. La liga en el nombre de la extensión lleva al repositorio del código de la extensión y donde, además, muestra instrucciones de instalación y uso.
3. Troubleshooting
Esta es (por el momento) una recopilación de algunos errores o dificultades que se han experimentado de primera mano durante la instalación y uso del ecosistema de Jupyter Lab. Cada entrada se identifica por el mensaje de error o condición del problema, seguida por la descripción y posible solución.
Jupyter Lab no arranca (pese a estar instalado) o «Connection refused» es presentado en el browser
Ya me pasó que, pese a estar instalado, en la primer invocación, el entorno no arrancó. Algunas cosas que he hecho cuando se ha presentado esto son:
- Volver a intentarlo
- Sip, aunque parezca la «típica solución de usuario», antes de ponerse a arreglar algo que no necesita arreglo, conviene hacer una segunda prueba, pero razonada. Esto me ha ocurrido cuando, por ejemplo: El browser detecta que no es el navegador por defecto y pregunta si quiere cambiarse esto. Al parecer esto rompe alguna secuencia de acciones y ni el servidor ni el cliente responden. Ya sea que se conteste sí o no la pregunta, al segundo intento puede haber una respuesta.
- Reiniciar el equipo
- Sip, otra típica solución de usuario, pero puede funcionar.
«No browser found«
Este mensaje aparece al intentar arrancar el servicio. La consola mostrará:
$ jupyter lab
...
[I 11:01:01.109 LabApp] The Jupyter Notebook is running at:
[I 11:01:01.109 LabApp] http://localhost:8888/?token=e8605db6f3f7ffc1143ffe7e29ac40a02f9f5592479fddfb
[I 11:01:01.111 LabApp] or http://127.0.0.1:8888/?token=e8605db6f3f7ffc1143ffe7e29ac40a02f9f5592479fddfb
[I 11:01:01.113 LabApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[W 11:01:01.124 LabApp] No web browser found: could not locate runnable browser.
...
Una posible causa es que no esté indicado cuál es el navegador a abrir por defecto, que puede ser también causado por la ausencia del archivo de configuración. Si no existe este archivo, éste puede crearse con:
$ jupyter lab --generate-config
Writing default config to: /home/evasd/.jupyter/jupyter_notebook_config.py
Dentro de éste buscar la sección correspondiente al comentario:
## Specify what command to use to invoke a web browser when opening the notebook
y en ella, escribir lo necesario para abrir el navegador favorito, por ejemplo habilitar Google Chrome en Windows:
import webbrowser
webbrowser.register('chrome', None, webbrowser.GenericBrowser('/c/"Program Files (x86)/Google/Chrome/Application/chrome.exe"'))
webbrowser.open('http://localhost:8888')
c.NotebookApp.browser = 'chrome'
es posible que en el sistema operativo se requiera de una variable de ambiente, por ejemplo para Google Chrome en Windows con WLS:
export BROWSER="/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"
(test) lalo@EDUARDO7737:~$ export BROWSER=»/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe»
(test) lalo@EDUARDO7737:~$ «$BROWSER»
import webbrowser
webbrowser.register('edge', None, webbrowser.GenericBrowser('/mnt/c/Program\ Files\ \(x86\)/Microsoft/Edge/Application/msedge.exe'))
webbrowser.open('http://localhost:8888')
c.NotebookApp.browser = 'edge'
«Jupyter Lab not found«
Al tratar de arrancar el servicio, se presenta el error mostrado abajo, ya sea porque algo quedó mal en la instalación o porque no está instalado.
$ jupyter lab
Traceback (most recent call last):
File "/home/evasd/miniconda3/envs/evamodels/bin/jupyter", line 10, in <module>
sys.exit(main())
File "/home/evasd/miniconda3/envs/evamodels/lib/python3.6/site-packages/jupyter_core/command.py", line 230, in main
command = _jupyter_abspath(subcommand)
File "/home/evasd/miniconda3/envs/evamodels/lib/python3.6/site-packages/jupyter_core/command.py", line 133, in _jupyter_abspath
'Jupyter command `{}` not found.'.format(jupyter_subcommand)
Exception: Jupyter command `jupyter-lab` not found.
Se corrige (re)instalando la aplicacion (ver Instalación y actualización).
«Connection lost» o sesiones de terminal no cerradas (colgadas)
Los problemas de conexión son comunes cuando se está trabajando remotamente a donde reside el servidor de Jupyter Lab (como es el caso de SageMaker); especialmente cuando se trabaja con terminales. Cualquier intermitencia o retraso en la red puede hacer que las sesiones de terminal se cierren, dejando el proceso colgado. Dos forma de lidiar con este problema son (en orden preferente):
- Retomar la sesión desde Jupyter.
- Matar los procesos de terminales colgadas.
«IOPub data rate exceeded«
La consola muestra el mensaje de error:
[W 2021-12-04 17:34:11.033 ServerApp] IOPub data rate exceeded.
The Jupyter server will temporarily stop sending output
to the client in order to avoid crashing it.
To change this limit, set the config variable
`--ServerApp.iopub_data_rate_limit`.
seguido de los valores actuales en la configuración. Esto puede ser provocado, por ejemplo, por una celda con el código:
with open('NLP_task_data.txt') as f:
lines = f.readlines()
print(lines)
Esto puede ser arreglado declarando en el archivo de configuración el parámetro ServerApp.iopub_data_rate_limit. El mencionado archivo de configuración puede no existir. Se crea con:
$ jupyter lab --generate-config
y una vez generado puede buscarse el parámetro mencionado, que seguramente aparecerá comentado. Descomentarlo y ajustar el valor de ser necesario. Una alternativa, si no se quiere generar el archivo de configuración y trabajar con los parámetros por defecto, es indicar este valor en la línea de comando con el valor requerido, e.g.:
$ jupyter lab --ServerApp.iopub_data_rate_limit 1e10
«ERROR: No matching distribution found for jupyterlab»
Al tratar de instalar Jupyter Lab haciendo uso de pip aparecen mensaje de advertencia y error (aunque con el comando conda funciona la instalación):
(conda-env) user@machine:~$ pip install jupyterlab
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f769fec9760>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/jupyterlab/
...
ERROR: Could not find a version that satisfies the requirement jupyterlab (from versions: none)
ERROR: No matching distribution found for jupyterlab
Aunque hay varias soluciones a problemas que parecen similares, que van desde la configuración de elementos de red en el sistema operativo donde se ejecuta el comando hasta elementos de red o seguridad entre sistema operativo huésped y anfitrión (por ejemplo, una distribución linux dentro de WSL), la solución más simple y efectiva ha sido ejecutar en un prompt de MS-DOS:
C:\> wsl --update
«error: command ‘gcc’ failed: No such file or directory»
Al tratar de instalar el paquete jupyterlab (o algún otro de Python), una serie de mensajes de error aparecen mostrando:
(conda-env) user@machine:~$ pip install jupyterlab
Collecting jupyterlab
Downloading jupyterlab-3.6.3-py3-none-any.whl (8.9 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.9/8.9 MB 12.4 MB/s eta 0:00:00
...
copying psutil/tests/__main__.py -> build/lib.linux-aarch64-cpython-39/psutil/tests
running build_ext
building 'psutil._psutil_linux' extension
creating build/temp.linux-aarch64-cpython-39
creating build/temp.linux-aarch64-cpython-39/psutil
gcc -pthread -B /home/lalo/miniconda3/envs/test/compiler_compat -Wno-unused-result -Wsign-compare -DNDEBUG -O2 -Wall -fPIC -O2 -isystem /home/lalo/miniconda3/envs/test/include -I/home/lalo/miniconda3/envs/test/include -fPIC -O2 -isystem /home/lalo/miniconda3/envs/test/include -fPIC -DPSUTIL_POSIX=1 -DPSUTIL_SIZEOF_PID_T=4 -DPSUTIL_VERSION=595 -DPy_LIMITED_API=0x03060000 -DPSUTIL_ETHTOOL_MISSING_TYPES=1 -DPSUTIL_LINUX=1 -I/home/lalo/miniconda3/envs/test/include/python3.9 -c psutil/_psutil_common.c -o build/temp.linux-aarch64-cpython-39/psutil/_psutil_common.o
psutil could not be installed from sources because gcc is not installed. Try running:
sudo apt-get install gcc python3-dev
error: command 'gcc' failed: No such file or directory
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for psutil
Failed to build psutil
ERROR: Could not build wheels for psutil, which is required to install pyproject.toml-based projects
Podrá observarse que como causa raíz el problema es la ausencia del compilador de C (marcado en rojo). La línea previa a ésta indica la forma de hacerse de él e instalarlo para el caso de Ubuntu. Si el uso de dicho comando (sudo apt-get install gcc python3-dev) también llegara a marcar un error, posiblemente sugiera también alguna alternativa (como podría ser sudo apt-get install --fix-missing gcc python3-dev). Antes de recurrir a ello se sugiere primer probar con sudo apt-get update, luego volver a intentar la instalación del compilador de C y finalmente instalar jupyterlab de ya no haber errores.
«Could not determine jupyterlab build status without nodejs»
Al arrancar el servidor Jupyter, un mensaje puede aparecer en la consola del servidor indicando la ausencia se nodejs para poder determinar la versión de Jupyter. Se resuelvec con:
$ pip install 'nodejs-bin[cmd]'
Actualización de kernels
Durante el arranque una advertencia puede aparecer sobre la necesidad de actaulizar un kernel. Revisar la sección correspondiente a cada uno de éstos en esta página.
Referencias
- «Project Jupyter«, jupyter.org, web. Visited: 2020.05.12. URL: https://jupyter.org/.
- Giannis Doukas, «Jupyter kernels«, github.com, web. Visited: 2020.05.13. URL: https://github.com/jupyter/jupyter/wiki/Jupyter-kernels.
- «Installation«, jupyter.org, web. Visited: 2020.05.12. URL: https://jupyterlab.readthedocs.io/en/stable/getting_started/installation.html.
- Jeff Hale, «How to Customize JupyterLab Keyboard Shortcuts«, towardsdatascience.com, web. Published: 2018.09.23; visited: 2020.05.12. URL: https://towardsdatascience.com/how-to-customize-jupyterlab-keyboard-shortcuts-72321f73753d.
- «Working with Jupyter Notebooks in Visual Studio Code«, visualstudio.com, web. Visited: 2020.05.21. URL: https://code.visualstudio.com/docs/python/jupyter-support#_setting-up-your-environment/.
- «Jupyter Project Documentation«, jupyter.org, web. Visited: 2023.05.17. URL: https://docs.jupyter.org/en/latest/.
- «Jupyter Notebook Kernels: How to Add, Change, Remove«, queirozf.com, web. Updated: 2022.11.28; visited: 2024.01.09, URL: https://queirozf.com/entries/jupyter-kernels-how-to-add-change-remove.
- «IJulia«, julialang.github.io, web. Visited: 2024.01.09. URL: https://julialang.github.io/IJulia.jl/stable/.
- «Jupyter College at Bryn Mawr College«, brynmawr.edu, web. Visited: 2024.05.08. URLs: https://jupyter.brynmawr.edu/hub/login, https://jupyter.brynmawr.edu/services/public/dblank/
Entradas en el blog
- «The Jupyter ecosystem«, partes 1, 2, 3.
- «La vida detrás de un proxy«, URL: https://dredu.mx/2022/02/04/la-vida-detras-de-un-proxy/.
- «Could not determine jupyterlab build status without nodejs«, URL: https://dredu.mx/2024/03/30/could-not-determine-jupyterlab-build-status-without-nodejs/.
- «De Python y sus demonios (2)«, URL: https://dredu.mx/2025/07/22/de-python-y-sus-demonios-2/.
|
© Todos los derechos reservados. Dr. Eduardo René Rodríguez Avila |
Creación: 2019.07.23 Última actualización: 2025.08.14 |
|||
| El contenido de este sitio puede ser copiado y reproducido libremente mientras no sea alterado y se cite su origen. Marcas y productos registrados son citados por referencia y sin fines de lucro o dolo. Todas las opiniones son a título personal del o los autores de éstas y, salvo sea expresado de otro modo, deben considerarse como registro y expresión de la experiencia de uso de aquello que es tratado. Para conocer más sobre la posición de privacidad y responsabilidad de lo que se presenta en este sitio web y como ha sido obtenido, consulte la declaración al respecto. | |||||




