Maxwell : Configuring Jupyter Kernels

python kernels are essentially very simple json files and some icons for the jupyter(lab) launcher. A kernel directory typically looks like this:

@max-display:~$ ls -1 /software/jupyter/share/kernels/pytorch/
kernel.json
logo-32x32.png
logo-64x64.png
logo-svg.svg

The kernel.json file

{
 "argv": [
  "/software/jupyter/.conda/envs/pytorch-1.13/bin/python",
  "-m",
  "ipykernel_launcher",
  "-f",
  "{connection_file}"
 ],
 "display_name": "Pytorch",
 "language": "python",
 "metadata": {
  "debugger": true
 }
}

For python kernels there are only two relevant entries, the path to the python interpreter and the display_name. You can specify any location for the python interpreter, it doesn't have to be a conda environment, a private install of e.g. mambaforge or a classical virtual environment will also do, as long as ipykernel is part of the installation.

Kernel locations

jupyter will by default look for kernels inĀ 

  • /software/mamba/2022.06/share/jupyter/kernels (and likewise for other conda/mamba installations)
  • ~/.local/share/jupyter/kernels/

The search path can be extended to include arbitrary locations, for example max-jhub uses

  • export JUPYTER_PATH="/software/jupyter/share:$JUPYTER_PATH"

This way jupyter will find kernels install in /software/jupyter/share/kernels

Whitelisting kernels

JupyterLab will by default show all kernels it finds in aforementioned locations. You can however hide all but explicitly specified (whitelisted) kernels.

Add to ~/.jupyter/jupyter_notebook_config.py for example

# only show kernels pytorch and julia
c.KernelSpecManager.whitelist = {'pytorch','julia'}
# also hide the default python3 kernel (which you usually don't want to do)
c.KernelSpecManager.ensure_native_kernel = False