Proper shebang for python3
Manfred Lotz
ml_news at posteo.de
Sun Jul 21 04:04:47 EDT 2019
On Sun, 21 Jul 2019 10:21:55 +1000
Cameron Simpson <cs at cskk.id.au> wrote:
> On 21Jul2019 09:31, Chris Angelico <rosuav at gmail.com> wrote:
> >On Sun, Jul 21, 2019 at 9:15 AM Cameron Simpson <cs at cskk.id.au>
> >wrote: So.... you mean that a tool that depends on running on a
> >consistent environment, it should use a shebang of
> >"/usr/bin/python3.6" instead of "/usr/bin/env python3"?
>
> Jeez. No. That is the _opposite_ of what I'm saying.
>
> >Because, wow, that would be exactly what is
> >already happening on my system. Why use /usr/bin/env and then wrap
> >something around it to force the environment, when you could just set
> >a correct shebang so it properly defines its execution environment?
>
> Because the shebang is hardwired and inflexible.
>
> Because it means hand patching (even scripted) a bazillion scripts to
> that they know their physical install.
>
> Because it presumes detailed hardwired knowledge of the target system
> in a script which should work anywhere.
>
> Instead a tiny _common_ shell script resembling this:
>
> #!/bin/sh
> # Run command in the official environment.
> exec env - PATH=/path/to/3.6venv/bin:/usr/sbin:/bin exec ${1+"$@"}
>
> arranges things. The "env -" is aimed at "clean" daemon or install
> environments. You can do subtler or less intrusive things in other
> settings.
>
I took a look and found that Fedora 30 and Debian Jessie both use
hard-wired paths for python in the rpm resp. deb packages.
I'm being new to Python and I am not acquainted in any way with
virtualenv resp. venv so cannot currently judge its pro and cons.
So I will stick to:
#!/usr/bin/env python3
as shebang for my scripts.
--
Manfred
More information about the Python-list
mailing list