On 07/31/2017 04:25 PM, Barry Warsaw wrote:
[...]
The message we want to send is: "everything that can be ported to Python 3
should be ported, and everything that can run on Python 3 should run on it.”
+1
However, having /usr/bin/python point to Python 2 is continuing the concrete mindset for
Linux users that "the default" version of Python is still Python 2.
Those mixed signals are especially problematic with maintainers that aren't
familiar with the Python ecosystem (e.g. they only use a Python-based
buildsystem).
IMHO, the reason why this is so is because `python` (at the prompt, a.k.a.
typically /usr/bin/python) is the CLI API for *users*. It’s what they’re
taught to type at the command line to run their scripts or to start the
interpreter to play with things.
PEP 394 already recommends `python2` and `python3` in the shebang line for
distro-provided executables. I think we turn some SHOULDs into MUSTs so that
any PEP-394 compliant *nix distro will be required to follow the same rules.
Further, I’d add that PEP 394-compliant distros MUST NOT put /usr/bin/python in
shebangs.
+1
Ah, yes, this is missing from the "PEP 548" pull request.
(PEP 394 does not talk about `/usr/bin/env python` which is often used by
developers, although highly discouraged for distro-provided scripts, at least
in Debian. If we want to add a note about this, I think we make it clear that
this usage relies solely on the user’s own $PATH environment, and therefore
lies outside the scope of the PEP.)
+1
I’d like to discourage the use of naming schemes like `idle2`, `pydoc2`, etc.
That’s a problematic approach, for which -m invocation is much more
predictable, albeit less convenient. We still don’t have a good solution for
that, although many have been discussed. That’s probably outside the scope of
PEP 394 too.
I think that ship has sailed. The unversioned names should switch along
with /usr/bin/python, and the versioned ones should be allowed to die
along with /usr/bin/python[23]. Improving the -m situation is out of scope.
Lastly, we come to what /usr/bin/python points to, and that’s always been the
sticking point. There are two use cases.
* When people type that at the command line, which version of Python do they
get?
* When people use that in their own third-party (i.e. not distro-provided)
scripts, what version of Python do they get?
So, it’s a UI/UX problem now :)
> I would personally like to say /usr/bin/python will always point to
python3 after such-and-such a date, although as I’ve said above, my
timing would put that to later in 2020. However, I think we need to
allow distributions to make their own decisions on that timing. Some
may choose to never make it, others may be proactive.
There are two ways to go here. Either we can make it a MUST to point
/usr/bin/python to python3, and just label any distro that decides otherwise as
“non-PEP-394-compliant”, or we make the choice more lax (possibly SHOULD,
possibly MAY) and allow leeway for otherwise in-compliance distros. I suspect
there will be some in Debian that will argue for the latter, and they will make
good points. OTOH, I think we’re well past the tipping point, and will face
the cliff pretty darn soon. I haven’t completely made my own mind up on this
point. In the meantime, I think we can make a lot of progress on PEP 394 as
I’ve outlined above.
The other recommendations proposed here are designed so they can be
implemented right now, with no bad side effects, but switching
/usr/bin/python will break things. I think here it's good to leave the
timing up to distros, and to suggest that the distros allow users to
override their decisions.
_______________________________________________
Linux-sig mailing list
Linux-sig@python.org
https://mail.python.org/mailman/listinfo/linux-sig