【发布时间】:2019-11-19 17:58:35
【问题描述】:
如果您使用 sudo 运行 pip,--user 标志是否会执行任何操作,如下所示:
sudo pip install --user <package_name>
软件包将安装在哪里,它的权限是什么?
【问题讨论】:
如果您使用 sudo 运行 pip,--user 标志是否会执行任何操作,如下所示:
sudo pip install --user <package_name>
软件包将安装在哪里,它的权限是什么?
【问题讨论】:
来自man 1 pip-install:
--user 安装到您平台的 Python 用户安装目录。通常是 ~/.local/,或 Windows 上的 %APPDATA%Python。 (有关详细信息,请参阅 site.USER_BASE 的 Python 文档。)
其中~代表有效用户的主目录。
如果您使用sudo 运行它(使有效用户成为root 用户),该软件包将安装在root 用户的主目录中,在大多数发行版上等同于/root/,从而形成最终安装路径/root/.local/.
【讨论】:
sudo pip install --user <uninstalled_package> 安装新软件包之前和之后使用 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*/的内容,你很可能会在那里找到包。