sudo pip install VS pip install --user 使用sudo pip install安装与使用pip install --user安装的区别。

34

我不记得在哪里看到的了,但可能是在这里或者我正在跟随教程时的评论中,一个人说:

绝对不能使用 sudo pip install;你可能会无意中覆盖重要的东西。请改用 pip install --user

尽管我到处都看到关于 sudo pip install 的参考资料,但是这个人知道他们在说什么并且我应该避免它吗?


4
理论上,恶意软件包可以通过其setup.py文件中指定的各种指令来安装/读取/修改/删除它有权访问的任何文件。使用sudo安装可以扩大可以修改的文件/位置的数量。基本上,您正在允许未经审查的代码获得系统根访问权限。在实践中,从可信作者安装软件包时,您不太可能遇到问题--至少不会比从发行版的软件包管理器安装软件包更容易受到攻击。话虽如此,“--user”选项可用,并且应该认真考虑。 - jedwards
1
我已经无数次使用sudo pip而从未遇到过任何问题,一旦你信任源,就不用担心它。 - Padraic Cunningham
1
对于任何感兴趣的人,这里有一个相似问题的非常好的答案链接 - bruno desthuilliers
这个回答解决了你的问题吗?运行'sudo pip'有哪些风险? - Josh Correia
2个回答

27
$ sudo pip install 

将包全局安装在Python安装中,即适用于所有用户。

$ pip install --user

安装到本地用户目录,即~/.local/lib/python -- 仅适用于你自己。

例子:

$ sudo pip install jupyter
$ jupyter notebook

将运行Jupyter,打开Web浏览器,使你可以使用笔记本进行工作。

$ pip install --user jupyter
$ jupyter notebook

在本地目录被添加到PATH之前,不会执行任何操作。

pypi最近包含了恶意代码。永远不要使用sudo来使用pip进行安装。这与以root身份运行病毒程序相同。要么将您的本地文件夹添加到PATH,要么使用virtualenv。


9

sudo pip安装意味着您想要系统范围内安装软件包。对于某些软件包,比如virtualenvwrapper,这可能很有用,但除此之外,我建议避免安装系统范围的软件包,为每个应用程序创建一个虚拟环境,并在该虚拟环境中使用pip install(可以不使用sudo)。


@jedwards 我相信jedwards的想法是为什么人们建议不这样做的正确理由。我正在使用单一的服务器,所以系统范围内不应该有问题。话虽如此,我仍然在使用--user,并希望有一个更可靠的答案。 - Chockomonkey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接