为什么默认情况下 pip 包没有安装到 $PATH?

Why are pip packages not installed to $PATH to by default?

通常在 ruby 生态系统中使用 rubygems 或 JavaScript 生态系统中的 npm/yarn 软件包安装在 $PATH 或者至少你被指示将包安装位置添加到你的路径 $PATH.

似乎 pippython 生态系统中从来没有强调这一点。相反,我们鼓励您通过 python -m <name> 等 运行 模块

我觉得有点奇怪,这只是一个设计决定吗?将 site-packagespip 正在使用的任何位置放入 $PATH 是一种好习惯吗?有时一个二进制文件被添加到 /usr/local/bin (有时使用与包本身不同的名称,例如 django-admin 而不是 djangopip install Django 而二进制文件通常与ruby/JavaScript 生态系统中的包名称),例如,我明白了,但一直都是这样吗?

当您 运行 安装的二进制文件时,特定 python 安装的 site-packages 目录会自动添加到 sys.path。当该二进制文件执行 import modname 时,它会在 sys.path 上的目录中查找。因此,当您 运行 pip install 使用特定的 python 二进制文件时,pip 默认情况下将包放入该二进制文件的 site-packages 中,以便二进制文件可以导入包裹。 Advanced used可以做更复杂的事情。

您混淆了 $PATH$PYTHONPATHsite-packages 用于 $PATH 用于 程序 (二进制文件和脚本)。 pip 将库安装到其 site-packages 并将脚本安装到相应的 bin/ 目录;例如如果 site-packages/usr/local/lib/pythonX.Y/site-packages 脚本安装到 /usr/local/bin/.

pip 不检查 /usr/local/bin/ 是否在 $PATH 中。好吧,我同意你的看法——它应该检查并提醒用户将 bin/ 目录添加到 $PATH 如果它还不存在。