python:为什么用户脚本目录在 python 个版本之间共享?

python: why is user script directory shared across python versions?

来自PEP-370

user script directory

A directory for binaries and scripts. [10] It's shared across Python versions and the destination directory for scripts.

Unix (including Mac)

  ~/.local/bin

Windows

  %APPDATA%/Python/Scripts

为什么它建议特定于版本的用户站点目录而不是用户脚本目录?来自不同 python 版本的脚本不会相互冲突吗?

编辑。是的,他们会的。我用 python2-pytestpython3-pytest 做了一个测试。当使用 pip 将两者安装到用户目录时,一个 pytest 脚本在没有警告的情况下覆盖了另一个。

似乎有一个相关的 link 但它已经死了:

关于bin目录的讨论http://permalink.gmane.org/gmane.comp.python.devel/91095

shell 不支持每个 Python 版本的二进制文件。命令行可执行文件只有一个命名空间,使用在 PATH 上列出的目录中找到的第一个名称。

这里~/.local/bin目录的意义在于它被添加到PATH环境变量中,脚本和其他可执行文件放在那里供命令行使用。而且由于此类可执行文件只有一个命名空间,因此将命令放入此处的每个版本目录毫无意义。

相反,由项目为您提供版本化的可执行文件。 pip 项目在与 Python X.Y 一起安装时使用 setup.py configurationpippipXpipX.Y 脚本,因此您当有多个 Python 版本时,你总是会有一个更具体的脚本版本。您还可以将模块用作 pythonX.Y -m pip 的脚本。许多 Python 命令行工具都有类似的支持。

至于丢失的 GMane link(仍然是 available on the web archive); there are other archives of the Python-dev discussion still available, such as this grokbase.com rendering of the same post;那次讨论是关于将脚本放在哪个目录中,~/bin~/.local/bin,并且从来没有关于每个 Python 版本的目录。