I wasn't able to find much recent discussion on this, but I'm a bit frustrated that there is so much manual work being done creating symlinks when a system already exists for that.

It seem many projects which support both python2 and python3 are depending on a hardcoded shebang, install order, or symlink creation in the spec file to set which version of python to use. It also seems the py*_build macros are hardcoded to use a versioned python interpreter for shebang lines.

Frankly I feel like I should be able to use /usr/bin/python or /usr/bin/env python and that should point to a non version-specifc python interpreter. If I have definite dependencies on a specific interpreter, then it is my responsibility to set my shebang appropriately. Otherwise, if my project has an unversioned executable, I have to change it based on my will and the Fedora version, rather than the will of the end user. Maybe they prefer python2, python3, or some other distribution of python becomes popular later (pypy?). If I don't have hard dependencies, why should I force a version? And why should I need to have conditionals on the Fedora version or maintain two spec files?

Assuming an end user never touches the default configuration, dependencies should already be taken care of with python_provides since unversioned dependencies should default to the release default.

Whether /usr/bin/python is symlinked using alternatives or another method, the py*_build macros should have a mechanism to overwrite the executable value.

Avram