为什么默认情况下 pip 包没有安装到 $PATH?
Why are pip packages not installed to $PATH to by default?
通常在 ruby
生态系统中使用 rubygems
或 JavaScript 生态系统中的 npm
/yarn
软件包安装在 $PATH
或者至少你被指示将包安装位置添加到你的路径 $PATH
.
似乎 pip
在 python
生态系统中从来没有强调这一点。相反,我们鼓励您通过 python -m <name>
等 运行 模块
我觉得有点奇怪,这只是一个设计决定吗?将 site-packages
或 pip
正在使用的任何位置放入 $PATH
是一种好习惯吗?有时一个二进制文件被添加到 /usr/local/bin
(有时使用与包本身不同的名称,例如 django-admin
而不是 django
和 pip install Django
而二进制文件通常与ruby
/JavaScript 生态系统中的包名称),例如,我明白了,但一直都是这样吗?
当您 运行 安装的二进制文件时,特定 python 安装的 site-packages
目录会自动添加到 sys.path
。当该二进制文件执行 import modname
时,它会在 sys.path 上的目录中查找。因此,当您 运行 pip install
使用特定的 python 二进制文件时,pip
默认情况下将包放入该二进制文件的 site-packages
中,以便二进制文件可以导入包裹。 Advanced used可以做更复杂的事情。
您混淆了 $PATH
和 $PYTHONPATH
。 site-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
如果它还不存在。
通常在 ruby
生态系统中使用 rubygems
或 JavaScript 生态系统中的 npm
/yarn
软件包安装在 $PATH
或者至少你被指示将包安装位置添加到你的路径 $PATH
.
似乎 pip
在 python
生态系统中从来没有强调这一点。相反,我们鼓励您通过 python -m <name>
等 运行 模块
我觉得有点奇怪,这只是一个设计决定吗?将 site-packages
或 pip
正在使用的任何位置放入 $PATH
是一种好习惯吗?有时一个二进制文件被添加到 /usr/local/bin
(有时使用与包本身不同的名称,例如 django-admin
而不是 django
和 pip install Django
而二进制文件通常与ruby
/JavaScript 生态系统中的包名称),例如,我明白了,但一直都是这样吗?
当您 运行 安装的二进制文件时,特定 python 安装的 site-packages
目录会自动添加到 sys.path
。当该二进制文件执行 import modname
时,它会在 sys.path 上的目录中查找。因此,当您 运行 pip install
使用特定的 python 二进制文件时,pip
默认情况下将包放入该二进制文件的 site-packages
中,以便二进制文件可以导入包裹。 Advanced used可以做更复杂的事情。
您混淆了 $PATH
和 $PYTHONPATH
。 site-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
如果它还不存在。