Control JupyterLab from Python notebooks.
The goal is to provide access to most of the JupyterLab environment from the Python kernel. For example:
- Adding widgets to the main area
DockPanel
, left, right or top area - Build more advanced interfaces leveraging
SplitPanel
,Toolbar
and other Lumino widgets - Launch arbitrary commands (new terminal, change theme, open file and so on)
- Open a workspace with a specific layout
- Listen to JupyterLab signals (notebook opened, console closed) and trigger Python callbacks
Try it in your browser with Binder:
Or with JupyterLite:
A subset of the features can be used in RetroLab:
You can install using pip
:
pip install ipylab
Or with mamba
/ conda
:
mamba install -c conda-forge ipylab
The current behaviour of IpyWidgets requires a Notebook or Console to create the Widget. Once the Notebook or Console Panel is closed, the widget comms is closed making the widget unavailable.
This Pull Request modifies the widget manager so widgets can be created without requiring a Notebook or Console to be open.
Wheels in the /pkg/
folder were built using this source
combining Per-kernel-widget-manager
and weakref.
These versions enable:
- Widget restoration when the page is reloaded.
- Starting new kernels and opening widgets from those kernels.
- autostart plugins - Run code when Jupyterlab is started.
- Viewing widgets from kernels inside from other kernels.
# For per-kernel-widget-manager support (Install modified version of ipywidgets, jupyterlab_widgets & widgetsnbextension)
pip install --no-binary --force-reinstall ipylab[per-kernel-widget-manager]
To try out the examples locally, the recommended way is to create a new environment with the dependencies:
# create a new conda environment
conda create -n ipylab-examples -c conda-forge jupyterlab ipylab ipytree bqplot ipywidgets numpy
conda activate ipylab-examples
# start JupyterLab
jupyter lab
ipylab
can be seen as a proxy from Python to JupyterLab over Jupyter Widgets:
# create a new conda environment
mamba create -n ipylab -c conda-forge nodejs python=3.11 -y
# activate the environment
conda activate ipylab
# install the Python package
pip install -e .[dev,per-kernel-widget-manager,test] # (with per-kernel-widget-manager)
# link the extension files
jupyter labextension develop . --overwrite
# compile the extension
jlpm clean
jlpm build
# pre-commit (optional)
pip install pre-commit
pre-commit run
# or, to install the git hook
pre-commit install
# Use jlpm script to lint the JS
jlpm lint
#or
jlpm lint:check
A config file is included to debug ipylab with Firefox or Chrome.
There are a couple of projects that also enable interacting with the JupyterLab environment from Python notebooks:
- wxyz: experimental widgets (including
DockPanel
) - jupyterlab-sidecar: add widgets to the JupyterLab right area
- jupyterlab_commands: add arbitrary Python commands to the jupyterlab command palette