Why is the `bin` directory named differently (`Scripts`) on Windows?

portability, python, virtual-environment, virtualenv

Solution

"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)

Problem

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")

Original source

Related problems