“pip install --user ...” 的用途是什么?

2025-01-06 08:32:00
admin
原创
110
摘要:问题描述:从pip install --help:--user Install to the Python user install directory for your platform. Typically ~/.local/, or %APPDATA%Python on Windows...

问题描述:

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是一个可怕的虫洞,里面充满了我不理解的有趣的类Unix主题。

用简单的英语来说 的目的是什么--user?为什么安装包很~/.local/重要?为什么不直接把可执行文件放在我的 中$PATH


解决方案 1:

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

--user让 pip 在你的主目录中安装包,这不需要任何特殊权限。

解决方案 2:

只是一个警告:

根据这个问题,--user目前在虚拟环境中无效pip,因为用户位置对于虚拟环境来说实际上没有意义。

因此,不要pip install --user some_pkg 在虚拟环境中使用,否则虚拟环境pip会混淆。有关更多详细信息,请参阅此答案。

解决方案 3:

没有虚拟环境

pip <command> --user将当前 pip 命令的范围更改为在当前用户帐户的本地 python 包安装位置上工作,而不是默认的系统范围包安装位置。

  • 请参阅PIP 用户指南中的用户安装。

这只在多用户机器上才真正重要。安装到系统位置的任何内容都将对所有用户可见,因此安装到用户位置将使该软件包安装与其他用户分开(他们不会看到它,并且必须自己单独安装才能使用它)。由于可能存在版本冲突,安装具有其他软件包所需依赖项的软件包可能会导致问题,因此最好不要将给定用户使用的所有软件包推送到系统安装位置。

  • 如果是单用户计算机,则安装到该位置几乎没有区别--user。它将被安装到不同的文件夹,可能需要或不需要添加到路径中,具体取决于包及其使用方式(许多包安装的命令行工具必须在路径上才能从 shell 运行)。

  • 如果是多用户机器,--user则最好使用 root/sudo 或要求管理员安装并影响每个用户的 Python 环境,除非管理员希望默认向所有用户提供通用软件包的情况。

    • 注意: 根据评论,在大多数 Unix/Linux 安装中,已经指出系统安装应该使用通用包管理器,例如apt,而不是pip

使用虚拟环境

  • 有关使用虚拟环境安装包的更多信息,请参阅Python 打包文档。

  • 阅读有关如何创建和使用虚拟环境以及Python VENV 文档中的venv命令。

活动 venv/virtualenv 环境中的选项--user将安装到本地用户 python 位置(与没有虚拟环境时相同)。

默认情况下,包会安装到虚拟环境中,但如果使用--user它会强制将其安装在虚拟环境之外,在用户的 python 脚本目录中(在 Windows 中,目前对`c:/users<username>appdata
oamingpythonpython37scripts`我来说是 Python 3.7)。

但是,您将无法从虚拟环境内访问系统或用户安装(即使您--user在虚拟环境中使用)。

如果您使用该参数安装虚拟环境--system-site-packages,您将可以访问 Python 的系统脚本文件夹。我相信这也包括用户 Python 脚本文件夹,但我不确定。但是,这可能会产生意想不到的后果,而且这不是使用虚拟环境的预期方式。

Python 系统和本地用户安装文件夹的位置

您可以使用 找到 python 用户安装文件夹的位置python -m site --user-base。我在问答、文档以及在我的 PC 上实际使用此命令时发现了相互矛盾的信息,但默认值位于用户主目录下(~*nix 中的快捷方式,c:/users<username>通常用于 Windows)。

其他详细信息

--user选项并非对每个命令都有效。例如,pip uninstall无论软件包安装在何处(在用户文件夹、虚拟环境文件夹等),该--user选项都无效。

安装的内容pip install --user将安装在只有当前用户帐户才能看到的本地位置,并且不需要 root 访问权限(在 *nix 上)或管理员访问权限(在 Windows 上)。

--user选项修改所有 pip接受它的命令以查看/操作用户安装文件夹,因此如果您使用pip list --user它,它将显示使用安装的软件包pip install --user

解决方案 4:

--user安装在site.USER_SITE

就我的情况而言,它是/Users/.../Library/Python/2.7/bin。所以我把它添加到我的 PATH 中(在~/.bash_profile文件中):

export PATH=$PATH:/Users/.../Library/Python/2.7/bin

解决方案 5:

其他答案提到了site.USER_SITEPython 包的放置位置。如果您要查找二进制文件,则这些文件位于 中{site.USER_BASE}/bin

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

export PATH="${PATH}:$(python3 -c 'import site; print(site.USER_BASE)')/bin"

解决方案 6:

最好的方法是安装virtualenv,这样就不需要--user混淆了。您将获得更大的灵活性,并且不必担心每次使用pip安装包时都会破坏不同的 Python 版本和项目。

解决方案 7:

在macOS上,使用该标志的原因--user是为了确保我们不会破坏操作系统所依赖的库。对于许多 macOS 用户来说,保守的方法是避免使用需要的命令安装或更新pipsudo。因此,这包括安装到/usr/local/bin...

参考:为Neovim安装 Python (为 Neovim 设置 Python

我不太清楚为什么在 Mac 上安装到/usr/local/bin是有风险的,因为系统只依赖于/Library/Frameworks/和中的 Python 二进制文件/usr/bin。我怀疑这是因为如上所述,安装到/usr/local/bin需要sudo,这为犯系统库代价高昂的错误打开了大门。因此,安装到~/.local/bin是避免这种风险的万无一失的方法。

参考:在 Mac 上使用 Python(4.在 Macintosh 上使用 Python

最后,从将软件包安装到 的益处来看,将目录的所有者从更改/usr/local/bin为 是否有意义? 这样可以避免使用,同时仍可防止进行依赖于系统的更改。 这是 Unix 系统过去更常使用的安全默认设置吗(作为服务器)?或者至少,对于没有托管服务器的 Mac 用户来说,这只是一个不错的选择?root`user*sudo`

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

解决方案 8:

为什么将包安装到 ~/.local/ 很重要?为什么不直接将可执行文件放在我的 $PATH 中?

~/.local/bin directory理论上预计在你的$PATH

据这些人 说,使用时没有添加它是一个错误$PATH`systemd`

这个答案对此进行了更详细的解释。

即使你的发行版将目录包含~/.local/bin在内,$PATH也可能采用以下形式(在内部~/.profile):

if [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"
fi

第一次创建目录时,需要您注销并再次登录。

解决方案 9:

如果您使用自己的Conda环境,请不要使用--user。如果您使用公共 Conda 环境,请使用--user在家中安装软件包~/.local/lib/

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2579  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1553  
  IPD(Integrated Product Development)流程作为一种先进的产品开发管理模式,在众多企业中得到了广泛应用。其中,技术评审与决策评审是IPD流程中至关重要的环节,它们既有明显的区别,又存在紧密的协同关系。深入理解这两者的区别与协同,对于企业有效实施IPD流程,提升产品开发效率与质量具有重要意义...
IPD管理流程   27  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、ClickUp、Freshdesk、GanttPRO、Planview、Smartsheet、Asana、Nifty、HubPlanner、Teamwork。在当今快速变化的商业环境中,项目管理软件已成为企业提升效率、优化资源分配和确保项目按时交付的关键工具。然而...
项目管理系统   22  
  建设工程项目质量关乎社会公众的生命财产安全,也影响着企业的声誉和可持续发展。高质量的建设工程不仅能为使用者提供舒适、安全的环境,还能提升城市形象,推动经济的健康发展。在实际的项目操作中,诸多因素会对工程质量产生影响,从规划设计到施工建设,再到后期的验收维护,每一个环节都至关重要。因此,探寻并运用有效的方法来提升建设工程...
工程项目管理制度   19  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用