The destination folder to install pip packages is delegated by pip to distutils, more specifically to distutils install command (https://github.com/pypa/pip/blob/master/src/pip/_internal/locations.py#L95-L129). The distutils install command performs a lookup to determine the schemes to use, this happens here (https://bitbucket.org/pypy/pypy/src/release-pypy3.6-v7.3.0/lib-python/3/distutils/command/install.py#lines-464:466) and is unconditionally set to pypy. The pypy schema is defined under https://bitbucket.org/pypy/pypy/src/release-pypy3.6-v7.3.0/lib-python/3/distutils/command/install.py#lines-46:52. The problem is the following line:
On all platforms the script folder is bin. The venv module though sets the script folder to Scripts, here (https://bitbucket.org/pypy/pypy/src/release-pypy3.6-v7.3.0/lib-python/3/venv/__init__.py#lines-131). The combination of these two causes pypy3 virtual environments to have their python executables on Windows using the Script folder, while pip installing all-new executable to the bin folder (a UNIX flavoured name). Is this duality intended?
A side effect of this is that activator scripts only cover now the python executables, not libraries.