
On 16 November 2017 at 06:49, Nick Coghlan ncoghlan@gmail.com wrote:
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.
OK, I'll add that to the list of things to look at.
Paul