Noting that another OU module has just started using classic Jupyter notebooks, with a deployment route based on students creating a miniconda environment, installing the notebook server and an additional R-kernel, into that environment, and then running the Jupyter notebook server from that environment, I tried a quick hack to package up a simple Pyhton extension to brand the notebook server.
The trick I use for branding our deployed environments is simply to use a custom logo and custom stylesheet. These need placing in a
custom directory on the Jupyer server environment path. Getting the files in the correct place caused some issues, notably:
jupyter_corepackage, in a recent version, has various routes to finding Jupyter config directories via
jupyter_core.paths. But older versions don’t seem to support that, so updating
jupyter_coresimply to add a logo feels a bit risky to me;
- getting the path to the environment is a faff, and can be sensitive to the ennvironment in which you run the
jupyter --pathscommands to discover paths. The hack I came up with was by default to install into the “generic”
~/.jupyterpath, with an option to pass in a conda environment name and then try to find a path that relates to that (and so far, only tested on a Mac).
Anyway, the repo is currently at https://github.com/ouseful-testing/classic-nb-ou-branding and can be installed as
pip install --upgrade git+https://github.com/ouseful-testing/classic-nb-ou-branding.git ou_nb_branding install --conda ENVIRONMENT_NAME
ENVIRONMENT_NAME is the name of the conda envt you want to install into if you installed and are running the jupyter server in the env. In M348 defaults , this means running the following command before you start the jupyter server:
ou_nb_branding install --conda r_env
Getting the path to install into is a hack, so it may break (plus, I only tested on Mac).
--conda switch, the installation defaults to whatever home Jupyter environment path is found. So in a simple envt installing the custom branding to default path, just run:
For branding JupyterLab (and I have no idea if this works for retrolab/new notebook etc.), see https://github.com/innovationOUtside/jupyterlab_ou_brand_extension