Apologies for reviving this thread. It's recently come up in relation to other discussions I've had and I did a grep over s/usr/bin to find instances where "/usr/bin/env python" was being used. Stefano reminded me of this thread, and when I went back and re-read it, I noticed there wasn't resolution on all the issues.
On Mar 04, 2011, at 11:23 PM, Piotr Ożarowski wrote: >any objections to change all shebangs (that do not match >/usr/bin/python\d(\.\d+) but do math .+python.* regexp) to >/usr/bin/python¹ in dh_python2 and to /usr/bin/python3 in >dh_python3? > >(+ an option to disable this behaviour in both helpers) > >if yes, should options (-OO, etc.) be removed as well? > >[¹] or /usr/bin/python2, depends on PEP 394 status As a reminder, the issue is that, in development (i.e. upstream) packages, it's perfectly fine to use "/usr/bin/env python" on the shebang line. However, I feel strongly that *installed* Python scripts, should never use this, and instead should use "/usr/bin/python" or possibly "/usr/bin/pythonX.Y". (Stefano brought up a legitimate case where this could prove inconvenient, but I think it's more important to have a functioning system :). There were two good proposals in the thread: - Debian Python policy should be stronger in its recommendation to use /usr/bin/python or /usr/bin/pythonX.Y in the shebang line instead of /usr/bin/env python. - dh_python{2,3} should rewrite the shebang lines by default, with an option to disable that. I just had a look at D-P policy $1.4.2 and it is stronger now than what Scott quoted back in March 2011. Here's what it says now: 1.4.2. Interpreter Location --------------------------- The preferred specification for the Python interpreter is `/usr/bin/python' or `/usr/bin/python<X>.<Y>'. This ensures that a Debian installation of python is used and all dependencies on additional python modules are met. Maintainers should not override the Debian Python interpreter using `/usr/bin/env python' or `/usr/bin/env python<X>.<Y>'. This is not advisable as it bypasses Debian's dependency checking and makes the package vulnerable to incomplete local installations of python. I like this. It strikes the right balance, and strongly discourages using /usr/bin/env. On the second point, I don't think Piotr ever implemented shebang line rewriting. I think it would be a good idea to have the helpers help you conform to D-P policy, so I support adding a feature to dh_python{2,3} to do this, with an option to disable it. Of course, this won't help packages that don't use the helpers. They'll still do the wrong thing unless the packager takes action. But at least we can point to the rationale in D-P policy, and this thread to explain why /usr/bin/env is usually a bad idea. Cheers, -Barry
signature.asc
Description: PGP signature