On 16 November 2017 at 05:29, Zachary Ware <zachary.ware+pydev@gmail.com> wrote:
On Wed, Nov 15, 2017 at 1:07 PM, Steve Dower <steve.dower@python.org> wrote:
> My preferred solution for this is to rename "py.exe" to "python.exe" (or
> rather, make a copy of it with the new name), and extend (or more likely,
> rewrite) the launcher such that:
>
> * if argv[0] == "py.exe", use PEP 514 company/tag resolution to find and
> launch Python based on first command line argument
> * if argv[0] == "python<numeric tag>.exe", find the matching
> PythonCore/<tag> install (where tag may be a partial match - e.g.
> "python3.exe" finds the latest PythonCore/3.x)
> * else, if argv[0] == "<module><numeric tag>.exe, find the matching
> PythonCore/<tag> install and launch "-m <module>"
>
> With the launcher behaving like this, we can make as many hard links as we
> want in its install directory (it only gets installed once, so only needs
> one PATH entry, and this is C:\Windows for admin installs):
> * python.exe
> * python2.exe
> * python3.exe
> * python3.6.exe
> * pip.exe
> * pip2.exe
> * pip3.exe

I haven't been following this thread closely, but this sounds lovely.
I'm not terribly keen on cluttering up C:\Windows with this, but
that's a minor issue.

I'd missed Steve's post before writing my last one. This sounds like a really nice technical solution to me, too, especially as it will handle Python 2 as well (even for Python 2 only systems, the launcher is available as an independently installable executable).

Regardless of the underlying implementation details though, a PEP would be a helpful way of writing it up so we can make sure packaging.python.org and other resources properly account for it.

Cheers,
Nick.

--
Nick Coghlan   |   ncoghlan@gmail.com   |   Brisbane, Australia