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
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]"
# 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.
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