I use asdf and its Python plugin [1] to install Python interpreter versions.
For managing virtual environments on my preferred shell (Fish), I use (and maintain) VirtualFish [2].
For managing project dependencies, I activate environments via VirtualFish and then use Poetry [3] to update the dependencies within the environments.
[1]: https://github.com/danhper/asdf-python