16

The venv module (shipped with Python 3.3 or later), and virtualenv, still widely in use, allow to install a project's dependencies not to the system-wide Python installation, but to a directory specific to that project.

One of the subdirectories of such a "virtual environment" contains a copy of the Python interpreter as well as "activate" and "deactivate" scripts - but this subdirectory is called Scripts on Windows, and bin on all other systems.

This is somewhat surprising. Why did they special-case Windows?

(Neither PEP 405, nor the venv or virtualenv sources (or docs) contain any explanation - a commit message in virtualenv refers to "convention")

tiwo
  • 3,238
  • 1
  • 20
  • 33

2 Answers2

11

"I think the commit message is the best you'll get. Everything else will be pure speculation." (Bryan's comment, refering to the commit message in virtualenv)

Community
  • 1
  • 1
tiwo
  • 3,238
  • 1
  • 20
  • 33
3

Most ms-windows programs have a GUI which is started by an icon or menu-entry. So there is no need for a standardized location for binaries (which is then put in the $PATH) such as UNIX has. Also, the name bin wouldn't mean anything like it does to UNIX users.

Additionaly, ms-windows only has a very primitive package management (if you can even call it package management), so applications tend to be installed in their own directory tree where they won't interfere with each other.

Roland Smith
  • 42,427
  • 3
  • 64
  • 94