【问题标题】:sudo pip install VS pip install --usersudo pip install VS pip install --user
【发布时间】:2015-06-01 08:55:17
【问题描述】:

不记得我在哪里读到这篇文章,但无论是在这里的某个地方,还是在我正在关注的教程的 cmets 中,有人说:

'永远不要使用 sudo pip install;你可以在不知情的情况下覆盖重要的东西。请改用 pip install --user!'

我到处都看到很多对 sudo pip install 的引用,所以这个人知道他们在说什么,我应该避免它,或者...?

【问题讨论】:

  • 理论上,恶意程序包可以通过 setup.py 文件中指定的各种指令安装/读取/修改/删除它可以访问的任何文件。使用 sudo 安装会扩大可以修改的文件/位置的数量。您基本上允许未经审查的代码根访问您的系统。实际上,当从受信任的作者处安装包时,您不太可能被烧毁——至少不会比从发行版的包管理器中安装包更容易受到攻击。话虽如此,--user 开关是可用的,应该认真考虑。
  • 我用过 sudo pip 无数次都没有遇到过问题,只要你相信来源我就不用担心了。
  • 对于任何感兴趣的人,对于类似的问题有一个很好的答案here

标签: python pip sudo


【解决方案1】:

sudo pip install 可能意味着您要在系统范围内安装软件包。对于某些包,例如 virtualenvwrapper,这可能很有用,但除此之外,我会避免安装系统范围的包并为每个应用程序创建一个 virtualenv 并将 pip 安装到该 virtualenv(无需 sudo 即可完成)。

【讨论】:

  • @jedwards 我相信 jedwards 对人们为什么不建议这样做有正确的想法。我在一个单一的服务器上工作,所以系统范围应该不是问题。话虽如此,我仍然在使用 --user 并希望有一个更可靠的答案。
【解决方案2】:
$ sudo pip install 

在你的 python 安装中全局安装包,即所有用户。

$ pip install --user

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

例子:

$ sudo pip install jupyter
$ jupyter notebook

将运行 jupyter,打开网络浏览器,允许您使用笔记本。

$ pip install --user jupyter
$ jupyter notebook

在将本地目录添加到 PATH 之前什么都不做。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-18
    • 2016-08-04
    • 2015-03-16
    • 2015-06-13
    • 2015-10-27
    • 2021-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多