返回博客

Pip 安装错误: 外部管理环境

有些 Python 安装允许用户自由添加软件包,而有些则由操作系统的软件包管理器严格管理。在这种受控环境中尝试使用 pip 安装软件包可能会导致外部管理环境错误。让我们来探讨一下出现这种情况的原因,并找到有效的解决方法。

James Keenan

2月 11日, 2025年

5 分钟阅读

什么是 “error: externally-managed-environment”?

当您尝试使用 pip 在一个由外部系统管理的 Python 环境中安装软件包时,会出现 Python 中的 externally-managed-environment 错误,例如操作系统软件包管理器或特定应用程序中捆绑的 Python 环境。该消息只是告诉您,在此环境中,软件包无法安装、修改或删除。

为什么会出现 “error: externally-managed-environment”?

externally-managed-environment 错误之所以会发生,是因为某些基于 Python 的环境施加了限制,以确保系统稳定并避免冲突,防止可能破坏系统或应用程序功能的未经授权的修改。

例如,FedoraDebian 等 Linux 操作系统发行版都预装了 Python。由于这些环境没有官方 Python 发行版,大多数用户必须使用内置解释器。尝试使用 pip 安装软件包会使它们下载到全局环境中,这可能会与现有的系统软件包冲突,并导致意想不到的错误和问题。更糟糕的是,如果试图卸载或升级软件包,可能会完全破坏操作系统的功能,因为可能会意外删除核心组件。

针对这一问题提出的解决方案是:发行商可以使其 Python 解释器的软件包标记为由 Python 外部的方法管理。这样做会告诉像 pip 这样的工具,除非特别重写,否则它不应该以任何方式更改已安装的系统包。因此,如果尝试全局安装一个软件包,就会遇到 externally-managed-environement 错误。

IconMobile.svg

访问经过严格审核的 1,000 多万个优质移动 IP

配备移动代理,不受任何限制地完成任务。

如何解决 “error: externally-managed-environment”?

externally-managed-environemnt 错误可能令人沮丧,但有几种有效的方法可以绕过它。以下三种解决方案可以帮助您安装所需的 Python 软件包,而不会遇到这种障碍:使用虚拟环境、使用系统软件包管理器或强制安装。

使用虚拟环境

要克服externally-managed-environemnt 错误,创建和使用虚拟环境是主要的解决方案。虚拟环境使您的 Python 设置与整个系统的 Python 安装隔离开来,允许您安装和管理软件包,而不影响系统的其他部分。下面是设置虚拟环境的分步指南:

1. 确保已安装 venv在某些操作系统上,如果没有 venv 模块,可能需要安装。在基于 Debian 的系统(如 Ubuntu)上,可以使用以下终端工具命令来完成安装:


sudo apt-get install python3-venv

2. 创建虚拟环境。导航至项目目录,然后使用此命令创建虚拟环境(把 envname 替换为您选择的名称):

python3 -m venv envname

3. 运行虚拟环境。激活虚拟环境以开始使用。操作系统不同,命令也不同:

Linux/macOS:

source myenv/bin/activate
myenv\Scripts\activate

4. 使用 pip 安装软件包。激活虚拟环境后,就可以安全地安装软件包,而不会出现外部管理环境错误。例如,运行以下命令安装请求库

pip install requests

5. 停用虚拟环境。完成 Python 虚拟环境中的工作后,运行以下命令停用虚拟环境:


Deactivate

按照这些步骤,您的项目会与系统范围内的 Python 安装隔离开来。这有助于避免 externally-managed-environment 错误,并确保您的项目拥有一致和安全的环境。每个项目都可以拥有自己的依赖项,而不受全局 Python 设置的影响,从而避免可能出现的冲突。

使用系统的软件包管理器安装

使用系统的软件包管理器安装

避免错误的另一个有效方法是通过系统的包管理器安装所需的 Python 包,而不是使用 pip。这种方法可以确保兼容性,避免与系统的 Python 环境发生冲突。


1. 确定系统使用的软件包管理器。以下是最常见的软件包管理器列表:

基于 Debian 的系统(如 Ubuntu)–apt

基于 Red Hat 的系统(如 Fedora)–yumdnf

基于 macOS 的系统 - brew

2. 接下来,更新软件包列表,以获得可用软件包的最新信息:

基于 Debian 的系统:

sudo apt-get update

基于 Red Hat 的系统:

sudo yum update

macOS 系统:

brew update

3. 搜索系统软件库中是否有可供安装的软件包:

基于 Debian 的系统:

apt-cache search <package_name>

基于 Red Hat 的系统:

yum search <package_name>

macOS 系统:

brew search <package_name>

4. 使用软件包管理器安装所需的软件包。软件包的名称可能与 pip 中的略有不同。例如,安装请求

基于 Debian 的系统:

sudo apt-get install python3-requests

基于 Red Hat 的系统:

sudo yum install python3-requests

macOS 系统:

brew install requests

使用系统的软件包管理器安装 Python 软件包有助于保持系统的稳定性,并确保以一致的方式管理所有依赖关系。这种方法利用系统的软件包管理功能来处理复杂的依赖关系,并与其他系统组件顺利集成。

强制安装

您可以使用 pip 和附加选项,绕过环境限制,在不出错的情况下安装软件包。由于这种方法可能会破坏系统的 Python 环境,因此应谨慎使用。下面是几种执行强制安装的方法:

在继续之前,请注意强制安装可能会导致与系统软件包冲突,从而可能造成不稳定或破坏系统的 Python 环境。如果您不确定自己在做什么,请使用虚拟环境或系统软件包管理器。

  1. 使用 --break-system-packages 选项–break-system-packages 选项。最新版本的 pip 包含–break-system-packages 选项,可以让 pip 忽略环境施加的限制。
pip install <package_name> --break-system-packages

2. 使用 --user 选项 --user 选项。它会在用户站点目录下安装软件包。这样就不需要管理权限,也降低了影响整个系统环境的风险。

pip install --user <package_name>

3. 使用–ignore-installed选项–ignore-installed选项。这是强制安装的另一种方法,可与 --user 选项结合使用,以提高安全性。

pip install --ignore-installed --user <package_name>

4. 结合使用 sudo(谨慎操作)。在万不得已的情况下,可以把 pip 命令与 sudo 命令结合使用,在系统级别强制安装。只有在绝对必要并充分了解潜在后果的情况下,才可以这样做。

sudo pip install <package_name> --ignore-installed

总结

当尝试在系统管理的环境中安装软件包时,Python 会出现 externally-managed-environemnt 错误,以确保稳定性并避免冲突。要解决这个问题,可以使用虚拟环境隔离设置,或通过系统的软件包管理器安装 Python 软件包。您也可以选择强制安装,但这样做有风险,应谨慎处理。

关于作者

James Keenan

资深内容作家

Smartdaili 的自动化和匿名传播者。他相信数据自由和每个人都有自主创业的权利。 James 在这里分享知识并帮助您在住宅代理方面取得成功。

Smartdaili 博客上的所有信息均按原样提供,仅供参考。对于您使用 Smartdaili 博客上的任何信息或其中可能链接的任何第三方网站,我们不作任何陈述,也不承担任何责任。

常见问题

什么是 "externally-managed environment error"?

当您尝试使用 pip 在由外部系统控制的 Python 环境(如操作系统软件包管理器或特定应用程序中捆绑的 Python 环境)中安装软件包时,就会发生 Python 中的 "externally-managed-environment error"。

如何解决使用 pip 时出现的 "externally-managed environment error" ?

为什么我的 Docker 容器会出现"externally-managed environment error"?

© 2018-2025 Smartdaili 版权所有 津ICP备2022004334号-1