Describing here a solution which is implemented for Ubuntu focal (20.04 LTS). A
new source package what-is-python (-perl-dont-hurt-me) ships binary packages
python-is-python2, python-dev-is-python2, python-is-python3 and
python-dev-is-python3. The python-is-python2 package provides the python
package, such that packages that still depend on python are not removed on a
distro upgrade. On new installs, python-is-python3 is not installed by default,
but the user gets a hint from command-not-found to install the package if he
tries to run python. Package dependencies on the new four binary packages have
to be disallowed in the Python policy. Note that such a package including the
Provides should only be uploaded once all dependencies on the unversioned python
packages are gone.
I like this solution in Ubuntu and I have:
onovy@jupiter:~$ dpkg -l | grep python-is-python3
ii python-is-python3 3.8.2-4 all symlinks /usr/bin/python to python3
What I think is good idea:
* keep "python" command pointing to python2.7 if I'm upgrading buster->bullseye with python2.7 installed. We are going to keep python2.7 interpreter for bullseye, so don't break old "python" command for third-parties apps/scripts/etc. (install python-is-python2 during buster->bullseye upgrade)
* allow users to choose if they want python=python3 (apt install python-is-python3)
* (maybe?) python=python3 in new installs, because why not? (install python-is-python3 by default in clean install)
--