My Problem
I’ve been messing around with Jupyter quite a bit trying to make a nice notebook for people that are not necessarily coders. So, it would be nice to give them a mostly graphical notebook with widgets and just let they play with the results at the end.
Unfortunately, you cannot auto-run things in Jupyter notebooks properly, and the hacks are brittle. You also cannot hide code easily, etc.
The Solution?
Thankfully, while these features are not built into Jupyter for some reason, there are a ton of contributor extensions to Jupyter it turns out! For example, if you need to reliably auto-run cells on start-up, you can install the init_cell plugin and the hide_input plugin.
The installation is actually very easy and can me done in a few bash commands as shown below, and there are a ton of other plugins around that you can use as well. You can even manage the plugins from within the UI after you set them up.
pip install jupyter_contrib_nbextensions jupyter contrib nbextension install --system jupyter nbextension enable init_cell/main jupyter nbextension enable hide_input/main
To use these, just read the links (or the documentation inside the UI at Edit > NB Extensions Config). You’ll find that there is just a cell metadata attribute you can add for each cell you want to affect. You can enable and disable the plugins in the UI as you like too.