brettcannon / python-launcher

Python launcher for Unix
https://python-launcher.app
MIT License
597 stars 25 forks source link

Support `.venv/Scripts/python.exe` #57

Open brettcannon opened 3 years ago

brettcannon commented 3 years ago

I.e. the Windows version of supporting default virtual environments.

jaraco commented 4 months ago

Today I created a .venv and ran py -m pip -V to confirm it was using the venv before I realized I wasn't using python-launcher, but was instead using the original Windows python launcher that's bundled with Python. I came here to see if this project had any plans to support Windows, and was pleasantly surprised to find the milestone.

jaraco commented 4 months ago

Perhaps another way to tackle this problem could be to migrate venvs to use bin/ instead of Scripts/. Reduce the divergence across platforms and save the hassle of the divergent behavior for many other libraries and applications. It would be some churn, but the disruption could likely be mitigated with some symlinks or hard links. IIRC, the divergent behavior was entirely artificial and unnecessary. Probably the hardest impediment to making the switch would be where to coordinate the change, given there are two popular implementations of "virtual environments" (virtualenv and venv), one of which is in the stdlib.

Amendment: I remember now, the Scripts convention doesn't come originally from virtualenv - it comes from Python's implementation itself, which uses Scripts instead of bin in its install layout. Quite the thread to pull on.

* pulls thread

https://github.com/python/cpython/issues/97586 proposes to make bin available as a junction. https://github.com/python/cpython/issues/58510 proposes to rename it. Apparently it's not impossible to move install locations (although to be sure, it's certainly more fraught today than in 2001. It looks like the origin of the Scripts directory was this commit to distutils.