[Python-Dev] Draft PEP and reference implementation of a Python launcher for Windows
Mark Hammond
mhammond at skippinet.com.au
Sun Mar 20 03:41:41 CET 2011
On 20/03/2011 4:15 AM, Dj Gilcrease wrote:
> On Sat, Mar 19, 2011 at 4:44 AM, Glenn Linderman<v+python at g.nevcal.com> wrote:
>> 2) If the launcher provides command line options for the "benefit" of
>> launching interactive Python interpreters, those command line options can
>> have data puns with script names, or can conflict with actual Python
>> options. I believe Python 2 already has a -3 option, for example.
FWIW, the point about Python 2 supporting a -3 arg is explicitly
mentioned in the PEP.
>> Windows users are not trained that "-" introduces an option syntax, but
>> rather "/". Most _programmer_ users would probably be aware of "-" as an
>> option syntax, but Python is used as a language for non-programmers in some
>> circles, and few Windows non-programmers understand "/" much less "-" and
>> not even command lines very well. So not using a launcher for launching
>> interactive Python sidesteps all that: Python itself is introduced and
>> taught, and no need to teach about (or even have) launcher options that
>> could possibly conflict and confuse, in addition to Python options that may
>> conflict with script names already. (I have seen lots of Windows users use
>> leading punctuation characters on filenames to affect sort order and
>> grouping of files in My Documents, not knowing they can create
>> subdirectories/subfolders, or not wanting to bother with them, since all
>> their applications default to opening things from My Documents.)
>
> The command line options I disagree with as well. If the user wants to
> test a script that has a shebang of python2 with python3 then they
> should explicitly launch it that way just like you would have to do on
> *nix
See my reply to Glenn on this - the optional -N.N argument must be the
first arg, as must the file with the shebang - so if you specify -N.N,
no shebang processing is done at all.
I expect that in general, the key advantage of shebang parsing will be
when the script is launched via file association - eg, entering the
command "foo.py" directly at the command-prompt or double-clicking from
explorer. Windows itself will lookup the association and execute
"py.exe foo.py" - there is no opportunity for the user to arrange for
arguments to be inserted in that command (only at the tail).
If a user explicitly specifies the command "py.exe -3 foo.py", I
personally think it is fine the shebang line is ignored as the user has
expressed a clear intention that a specific version of Python be used.
> No I think there should be at max 2 environment variables and they
> should be explicitly set by the user not added by default
> PYTHON_2
> If set would override the latest version of python2 that is
> launched via a shebang line ending in python or python2 but not
> python2.x
> PYTHON_3
> if set would override the latest version of python3 that is
> launched via a shebang line ending in python3 but not python3.x
The reference implementation currently supports 3 environment variables
- while they have different names, 2 of them work as you describe above.
The third is used to nominate how a simple 'python' with no version
qualifiers should be treated - I wanted the ability for the simple
'python' to execute a python 3.x version if desired by the user.
> Thank you Mark for writing up this pep. It is almost identical to the
> one I was working up but covers more details and actually provides an
> implementation example. Other then the command line args I agree with
> everything covered.
Thanks for the feedback!
Cheers,
Mark
More information about the Python-Dev
mailing list