python - “pip install --user ...”的目的是什么?

来自pip install --help

 --user      Install to the Python user install directory for your platform. Typically ~/.local/, or %APPDATA%\Python on
             Windows. (See the Python documentation for site.USER_BASE for full details.)

site.USER_BASE的文档是一个令人讨厌的虫洞,有趣的* NIX主题,我不明白。

用英语怎么说~/.local/是什么意思? 为什么要将包装安装到~/.local/? 为什么不在我的$ PATH中放置一个可执行文件?

Rob Truxal asked 2019-09-10T16:52:06Z
5个解决方案
109 votes

pip默认将Python包安装到系统目录(例如/usr/local/lib/python3.4)。 这需要root访问权限。

--user在您的主目录中生成pip安装包,而不需要任何特殊权限。

duskwuff answered 2019-09-10T16:52:30Z
15 votes

/Users/.../Library/Python/2.7/bin安装于/Users/.../Library/Python/2.7/bin

对于我的情况,它是/Users/.../Library/Python/2.7/bin.所以我已将其添加到我的PATH(在~/.bash_profile文件中):

export PATH=$PATH:/Users/.../Library/Python/2.7/bin
Roozbeh Zabihollahi answered 2019-09-10T16:53:03Z
7 votes

在MAC OS上,使用sudo标志的原因是为了确保我们不会破坏操作系统所依赖的库。 许多MAC OS用户的保守方法是避免使用需要root的命令安装或更新pip。因此,这包括安装到user ......

参考:为Neovim安装python([https://github.com/zchee/deoplete-jedi/wiki/Setting-up-Python-for-Neovim]]

我不清楚为什么在root rootuser中安装到sudo是一个MAC的风险。我怀疑这是因为如上所述,安装到/usr/local/bin需要sudo这打开了大门 使系统库犯了一个代价高昂的错误。 因此,安装到~/.local/bin是避免这种风险的可靠方法。

参考:在Mac上使用python([https://docs.python.org/2/using/mac.html]]

最后,在sudo中安装软件包的好处,我想知道将目录的所有者从root更改为user是否有意义? 这样可以避免使用sudo,同时仍然可以防止进行依赖于系统的更改。*这是一个安全默认值,它是过去经常使用Unix系统(如服务器)的遗留物吗? 或者至少,对于没有托管服务器的MAC用户来说,这是一个好方法吗?

*注意:Mac的系统完整性保护(SIP)功能似乎也可以保护用户免于更改依赖于系统的库。

- E.

Edmund's Echo answered 2019-09-10T16:54:13Z
4 votes

其他答案提到了放置Python包的site.USER_SITE。 如果您正在寻找二进制文件,请访问{site.USER_BASE}/bin

如果要将此目录添加到shell的搜索路径,请使用:

export PATH="${PATH}:$(python3 -c 'import site; print(site.USER_BASE)')/bin"
rgov answered 2019-09-10T16:54:47Z
0 votes

最好的方法是安装virtualenv而不要求--user混淆。 您将获得更多的灵活性,而不必担心每次pip安装包时都会破坏不同的python版本和项目。

[https://virtualenv.pypa.io/en/stable/]

user603749 answered 2019-09-10T16:55:22Z
translate from https://stackoverflow.com:/questions/42988977/what-is-the-purpose-pip-install-user