Dependency Management for Hub Users

I maintain a public JupyterHub instance that allows users to log in and create notebooks.

One of the biggest obstacles I’ve run into is dependency management. That is, different notebooks will depend on different packages being installed. Some even conflicting dependencies, such as some notebooks relying on Plotly 3.x and some relying on Plotly 4.x.

The question I want to ask the community is: What solutions exist for this in a shared JupyterHub environment?

Does anyone have a way to annotate a notebook’s dependencies and load those with the kernel when a notebook is launched? Or maybe there’s some way to distribute and load dependencies along with a notebook document? Or maybe some other solution exists?

Hi @tmtabor, I think a solution is use Docker spawner to create different environments for different user.
If you use k8s for a large hub, then you need a Kube spawner.
This my point of view.