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



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

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

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

你混淆了$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,如果它还没有。

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

相关内容

  • 没有找到相关文章

最新更新