If you don't care which version of python it runs under, you do this:
#!/usr/bin/env python
If you do, then `python2` or `python3` will be around, and you should specify them explicitly instead of `python`. I'm happy to be corrected on this one, but I always slap this at the top of my scripts:
#!/usr/bin/env python3
I'm not aware of anywhere that wouldn't invoke a Python 3 interpreter if one is installed.
My system doesn't have a `python`. On Ubuntu you need to install one of the `python-is-python2` or `python-is-python3` packages for the `python` command to be available.
Command 'python' not found, did you mean:
command 'python3' from deb python3
command 'python' from deb python-is-python3
"The python command should always invoke Python 2 (to prevent hard-to-diagnose errors when Python 2 code is run on Python 3)."
So there was indeed a time where the mentioned scenario was possible.
Edit: love those people who got to downvote reality. At no point was python pointing to either 2 or 3 will-nilly, but there was always a PEP specifying best practice behaviour.
The PEP is not superseded, still active. You got this quote from the "history of this PEP" section. This is not what the PEP currently mandates and it hasn't for 2.5 years: https://github.com/python/peps/pull/989
That was not the point. There was a time where the PEP specified that "python" means "python2" and it was indeed possible to have no "python" but still a Python (3) installation.
The original post just seems like one big faff.