【问题标题】:Where are pip packages installed if you run "sudo pip install --user <package_name>"?如果运行“sudo pip install --user <package_name>”,pip 包安装在哪里?
【发布时间】:2019-11-19 17:58:35
【问题描述】:

如果您使用 sudo 运行 pip,--user 标志是否会执行任何操作,如下所示:

sudo pip install --user &lt;package_name&gt;

软件包将安装在哪里,它的权限是什么?

【问题讨论】:

    标签: python ubuntu pip


    【解决方案1】:

    来自man 1 pip-install

    --user 安装到您平台的 Python 用户安装目录。通常是 ~/.local/,或 Windows 上的 %APPDATA%Python。 (有关详细信息,请参阅 site.USER_BASE 的 Python 文档。)

    其中~代表有效用户的主目录。

    如果您使用sudo 运行它(使有效用户成为root 用户),该软件包将安装在root 用户的主目录中,在大多数发行版上等同于/root/,从而形成最终安装路径/root/.local/.

    【讨论】:

    • 我看到了这个,但我仍然不清楚如果你用 sudo 运行命令 ~ 会在哪里。使用 sudo 运行它会改变 ~ 的含义吗?
    • 所以我有点怀疑,决定试试这个,但是它没有安装到root用户主目录,它安装到我的主目录。我在使用sudo pip install --user &lt;uninstalled_package&gt; 安装新软件包之前和之后使用 pip show 验证了这一点,我认为使用 sudo 不会改变 ~ 的含义。您还可以通过运行 sudo echo ~ 来验证 ~ 是否未更改。
    • 关于sudo echo ~ 示例:~ 只是一个shell 变量,替换为当前控制用户的主目录路径。在实际命令运行之前,它被 shell 替换为主目录的完整路径,因此正在执行的完整命令实际上是(例如用户名):sudo echo /home/alex。如果您想查看 /root 实际上是主目录,请尝试运行:su -c "echo ~"。这将启动一个以 root 用户作为控制用户的新 shell,并且不会使用当前 shell 替换 ~。它按预期打印/root
    • 另外,不要使用pip show,而是再次以root用户身份安装包并检查/root/.local/lib/python*/的内容,你很可能会在那里找到包。
    • 有趣!感谢您提供有关〜如何工作的信息。但是我检查了安装后 /root/.local 目录不存在,但是安装前我的用户 .local 目录中不存在该软件包,安装后该软件包在我的用户 .local 目录中。跨度>
    猜你喜欢
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    • 2019-08-15
    相关资源
    最近更新 更多