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

一、导言

想象一下:你正在装修房子,决定挂一幅新画。但突然,你的房东出现并告诉你,你不能修改墙壁,因为它们是建筑结构的一部分,由住房委员会管理。同样,有些 Python 安装就像你的家,你可以自由地添加软件包,而有些则由严格的房东控制,就像操作系统的软件包管理器。如果您尝试在受控环境中使用 pip 安装新软件包,您就会遇到外部管理环境错误(externally-managed-environment error)。让我们深入了解一下这种情况是如何发生的,以及你能做些什么。

找到更多信息请访问 Smartdaili 网站!

二、什么是 “错误:外部管理环境”?

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

找到更多信息请访问 Smartdaili 网站!

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

externally-managed-environment 错误之所以会发生,是因为某些基于 Python 的环境施加了限制,以确保系统稳定并避免冲突,防止可能破坏系统或应用程序功能的未经授权的修改。
例如,FedoraDebian 等 Linux 操作系统发行版都预装了 Python。由于这些环境没有官方 Python 发行版,大多数用户必须使用内置解释器。尝试使用 pip 安装软件包会将它们下载到全局环境中,这可能会与现有的系统软件包冲突,并导致意想不到的错误和问题。更糟糕的是,如果试图卸载或升级软件包,可能会完全破坏操作系统的功能,因为可能会意外删除核心组件。
针对这一问题提出的解决方案是:发行商可以将其 Python 解释器的软件包标记为由 Python 外部的方法管理。这样做会告诉像 pip 这样的工具,除非特别重写,否则它不应该以任何方式更改已安装的系统包。因此,如果尝试全局安装一个软件包,就会遇到 externally-managed-environement 错误。

找到更多信息请访问 Smartdaili 网站!

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

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

4.1. 使用虚拟环境

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

  1. 确保已安装 venv。在某些操作系统上,如果没有 venv 模块,可能需要安装。在基于 Debian 的系统(如 Ubuntu)上,可以使用以下终端工具命令来完成安装:
sudo apt-get install python3-venv
  1. 创建虚拟环境。导航至项目目录,然后使用此命令创建虚拟环境(将 envname 替换为您选择的名称):
python3 -m venv envname
  1. 运行虚拟环境。激活虚拟环境以开始使用。操作系统不同,命令也不同:

Linux/macOS:

source myenv/bin/activate

Windows:

myenv\Scripts\activate
  1. 使用 pip 安装软件包。激活虚拟环境后,就可以安全地安装软件包,而不会出现外部管理环境错误。例如,运行以下命令安装请求库
pip install requests
  1. 停用虚拟环境。完成 Python 虚拟环境中的工作后,运行以下命令停用虚拟环境:
Deactivate

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

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

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

  1. 确定系统使用的软件包管理器。以下是最常见的软件包管理器列表:
  • 基于 Debian 的系统(如 Ubuntu)–apt
  • 基于 Red Hat 的系统(如 Fedora)–yumdnf
  • 基于 macOS 的系统 - brew
  1. 接下来,更新软件包列表,以获得可用软件包的最新信息:
    基于 Debian 的系统:
sudo apt-get update

基于 Red Hat 的系统

sudo yum update

macOS 系统

brew update
  1. 搜索系统软件库中是否有可供安装的软件包:
    基于 Debian 的系统:
apt-cache search <package_name>

基于 Red Hat 的系统

yum search <package_name>

macOS 系统

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

基于 Debian 的系统:

sudo apt-get install python3-requests

基于 Red Hat 的系统

sudo yum install python3-requests

macOS 系统

brew install requests

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

4.3. 强制安装

您可以使用 pip 和附加选项,绕过环境限制,在不出错的情况下安装软件包。**由于这种方法可能会破坏系统的 Python 环境,因此应谨慎使用。**下面是几种执行强制安装的方法:
在继续之前,请注意强制安装可能会导致与系统软件包冲突,从而可能造成不稳定或破坏系统的 Python 环境。如果您不确定自己在做什么,请使用虚拟环境或系统软件包管理器。

  1. 使用 --break-system-packages 选项–break-system-packages 选项。最新版本的 pip 包含–break-system-packages 选项,可以让 pip 忽略环境施加的限制。
pip install <package_name> --break-system-packages
  1. 使用 --user 选项 --user 选项。它将在用户站点目录下安装软件包。这样就不需要管理权限,也降低了影响整个系统环境的风险。
pip install --user <package_name>
  1. 使用–ignore-installed选项–ignore-installed选项。这是强制安装的另一种方法,可与 --user 选项结合使用,以提高安全性。
pip install --ignore-installed --user <package_name>
  1. 结合使用 sudo(谨慎操作)。在万不得已的情况下,可以将 pip 命令与 sudo 命令结合使用,在系统级别强制安装。只有在绝对必要并充分了解潜在后果的情况下,才可以这样做。
sudo pip install <package_name> --ignore-installed

找到更多信息请访问 Smartdaili 网站!

五、总结

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

找到更多信息请访问 Smartdaili 网站!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值