通常,在ruby生态系统中使用ruby或在JavaScript生态系统中使用npm/yarn时,都会在$PATH的某个位置安装包,或者至少指示您将包安装位置添加到path $PATH中。
在pip的python生态系统中,似乎从来没有强调过这一点。相反,我们鼓励您通过python -m <name>运行模块,等等。
我觉得有点奇怪,这只是一个设计上的决定吗?将site-packages或pip使用的任何位置放置到$PATH中是一种良好的实践吗?例如,有时将二进制文件添加到/usr/local/bin中(有时使用与包本身不同的名称--例如,django-admin而不是带有pip install Django的django,而二进制文件通常与ruby/JavaScript生态系统中的包名称相同),例如,我看到了,但这一直是这样吗?
发布于 2018-05-20 20:08:19
你把$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目录。
发布于 2018-05-20 17:10:12
在运行安装的二进制文件时,特定python安装的site-packages目录将自动添加到sys.path中。当该二进制文件执行import modname时,它将查找sys.path上的目录。因此,当您使用特定的python二进制文件运行pip install时,默认情况下,pip会将该包放入该二进制文件的site-packages中,以便二进制文件能够导入包。先进的使用可以做更复杂的事情。
https://stackoverflow.com/questions/50437251
复制相似问题