[Python-Dev] PEP 441 - Improving Python ZIP Application Support (original) (raw)

Paul Moore p.f.moore at gmail.com
Tue Feb 17 21:52:50 CET 2015


On 17 February 2015 at 18:52, Barry Warsaw <barry at python.org> wrote:

So, the options I see:

1. Stick with /usr/bin/env python 2. No shebang unless -p is specified 3. Unix users come up with a solution which is the same as the above for Windows users, but which suits them better. #2 seems to me to be the most reasonable alternative. The resulting pyz files (built w/o -p) would still be explicitly executable, just like .py files.

I'm pretty sure that's the way the general feeling is going.

However, -p must be able to accept any number of strings, including "/usr/bin/env python3" if the user wants that.

The code simply writes '#!{}\n'.format(p_option).encode(sys.filesystemencoding()) to the file, so you can put whatever you want in. Given that it isn't the name of the Python executable, maybe the option should be --interpreter instead?

Oh, and am I right that the shebang line should be encoded using the filesystem encoding on Unix? I know 99.999% of use cases will be ascii, but someone could have a Python interpreter in /home/léon/.local/bin/python...

Probably the best thing to do (on *nix at least) is, if the path is absolute, use the given string verbatim. If the path is relative, search for the given executable on $PATH and use the first one found. If nothing is found, use what's given explicitly.

I'm not quite sure what you mean here, but maybe you're thinking that the -p option is the executable name rather than what gets put in the #! line directly? Let me know if it's not covered by what I've already said.

Paul



More information about the Python-Dev mailing list