Hi, Andreas Henriksson <andr...@fatal.se> writes:
> I've personally seen some upstream use 'python' in shebang with the > intention of meaning 'works with either python2 or python3', Yes, this has worked thus far, and it will definitely work in cases where `which python` is a symlink to python3 within a virtual environment. > but in debian it seems people have always assumed unversioned > (/usr/bin/)python always means python *2*. I don't think this is an assumption. Debian adheres to PEP 394, which until recently said that /usr/bin/python is supposed to be Python 2, for backwards compatibility. When I discovered this I felt increased trust in Debian and its developers for doing the sensible and standardised thing, rather than what some other distributions have done. To everyone involved, thank you! This also made me proud to be part of such a community :-) https://www.python.org/dev/peps/pep-0394/ I believe that it was on 26-Jun-2019 of this year that PEP 394 was modified to allow /usr/bin/python to be py3, because py2 EOL frees up this path. IMHO that change was premature and should have been deferred until the actual EOL. > I guess the tools are written in the latter sense here, rewriting the > shebang from python -> python2 explicitly unless you override it.... > Yeah, this is a tricky point. Per PEP 394 (until py2 EOL), this is the correct approach, but now it may make more sense to change this to "python -> python3", because if this breaks a package, tough luck, we're in a python3-only world. eg: packages in the archive should already have the shebang override, and NEW py2 packages will be rejected by ftpmasters. Cheers, Nicholas
signature.asc
Description: PGP signature