%pip-installed module requires different python to that that conda installed in jupyterhub environment

As root, I installed jupyterhub into a new environment using miniconda, which first installed python 3.13.1 into that environment:

/usr/local/opt/miniforge3/bin/conda create -y -p /usr/local/opt/jupyterhub jupyterhub jupyterlab notebook

I then logged into jupyterhub as non-root. Everything seemed to work fine.

I had some problems installing ScopeSim from within a notebook using:

%pip install scopsim

until I realised that ScopeSim wanted an older version of python. So I removed jupyterhub and installed it again using:

/usr/local/opt/miniforge3/bin/conda create -y -p /usr/local/opt/jupyterhub python=3.11.2 ipython jupyterhub jupyterlab notebook

and then ScopeSim worked fine. But this leads me to a question:

If I had a another module that required another different version of python how would I be able to run both that and ScopeSim under the same jupyterhub instance? It seems a bit crazy to have multiple instances of jupyterhub, each running under different versions of python so that the notebooks run inside them can run under different versions of python.

I think there is something I have not understood properly here. Could anybody explain please?

Your singleuser environment can be separate from your hub environment, and you can also have multiple kernels in different Python environments, all accessible from the same singleuser server.

This is a good explanation: