Are these made similarly to how Debian handles python2 and python3 for instance?
I’m not sure that anything short of a package manager that would compile everything from sources would be able to provide capability to pick and mix specific package versions.
Sounds pretty close to Debian as far as I remember. In Debian those symlinks are called alternatives, and can be configured with update-alternatives. Not sure about the Python libraries though.