On Mar 14, 2015, at 6:32 AM, Philipp A. <flying-sheep@web.de> wrote:

the PEP is pretty perfect.

#!/usr/bin/env python_binary_this_script_runs_with

if it runs with python 2: #!/usr/bin/env python2
if it runs with python 3: #!/usr/bin/env python3
if it runs with both: #!/usr/bin/env python

I don't see how this is perfect in the real world, or even a good recommendation.

Continuing to use python rather than python2 will work out of the box on nearly every *nix system today, with no exceptions larger than Arch Linux. Switching to python2 means you no longer work on a number of widely-deployed and still-supported versions (including even the latest betas of Mac OS X). What script developer in his right mind would take that tradeoff? (Especially what developer who isn't willing to move to 3.x, or to distribute or deploy their scripts in a more reasonable way, either of which eliminates the problem...)

And the only way that's likely to change over the next decade is that some platforms just won't include Python 2.7 out of the box at all--in which case python2 won't work any better than plain python.

the only thing worth discussing IMHO is if python 3 should start shipping with all symlinks from past 3.x minor versions to the newest minor version. then we could switch to #!/usr/bin/env python3.4 if it uses e.g. pathlib and would be sure that the script will work with future versions. but then again, users can install pathlib for 3.3…


Ryan Gonzalez <rymg19@gmail.com> schrieb am Do., 12. März 2015 um 00:13 Uhr:
On Wed, Mar 11, 2015 at 5:54 PM, Chris Barker <chris.barker@noaa.gov> wrote:
On Wed, Mar 11, 2015 at 3:41 PM, Gregory P. Smith <greg@krypto.org> wrote:
I think /usr/bin/env is a bad idea to promote. It changes from an explicit designation of what you need in order to execute to something being derived from the users $PATH.  It is *less specific* than /usr/bin/python. For some people that is the goal, but I discourage it.

I don't think the goal is specificity, or lack there of, but a shift in control:

Who controls where python is installed?

If you put an explicit full path on the #! line, then the script author controls which python is used, AND where it must be installed.

If you put /usr/bin env on the #! line, then the script author is saying 'use python", and the script user can have python installed anywhere they want, and can use PATH to tell everything what the default it.

I think that _should_ be encouraged -- but ideally with some versioning:

#!/usr/bin/env python2

or even:

#!/usr/bin/env python3.4


Please, just explicit major versions, not minor ones. python3, not python3.4. Just earlier this year I had to fix about 20 scripts that ran perfectly on 3.4 but whose hashbang explicitly used 3.1. It sucks.
 
If any of you remember what a pain it was when RedHat installed system tools with (I think):

!#/usr/bin/env python

You'll know what a nightmare that was -- you could not upgrade the 'default" python without breaking stuff. 

So system tools should probably use the full specific path -- the script is tied closely to the environment. But if they had at least put a version in there, it would have worked fine:

#!/usr/bin/env python1.5

These days, I try to use distutils or setuptools to install scripts, and they can do the right thing to use the correct python to start up anyway...

-CHB



--

Christopher Barker, Ph.D.
Oceanographer

Emergency Response Division
NOAA/NOS/OR&R            (206) 526-6959   voice
7600 Sand Point Way NE   (206) 526-6329   fax
Seattle, WA  98115       (206) 526-6317   main reception

Chris.Barker@noaa.gov

_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

--
Ryan
[ERROR]: Your autotools build scripts are 200 lines longer than your program. Something’s wrong.
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/