It's not easy to manage Python versions and environments.
The best solution I have found, personally, is pyenv.
Pyenv installs Python versions and environments locally, for your user only, without messing with the system's Python.
It uses a principle called shims: the
python command (and related ones like
jupyter, etc.) is intercepted and redirected to the local version that you choose.
Here's how I install pyenv and how I make it work with Jupyter.