如果您最近升级了 Linux 发行版(例如 Ubuntu 23.04 或更高版本),并尝试使用 pip 全局安装 Python 包,您可能遇到了一个令人沮丧的错误信息:
error: externally-managed-environment
这个错误不是一个bug;它是由 Python 改进提案 (PEP) 668 引入的 故意保护措施。其目的是防止用户意外地通过修改或删除由系统本地包管理器(如 apt 或 dnf)管理的核心 Python 包来破坏其操作系统。
虽然这是一个必要的安全措施,但它可能会阻碍您的开发工作流程。本指南将解释错误的原因,并提供三种最有效的解决方案,从最佳实践到快速(但有风险)修复。
理解“externally-managed-environment”错误(PEP 668)
核心问题是控制的冲突。您的操作系统依赖特定版本的 Python 包来实现自身功能。当您全局使用 pip install 时,您可能会覆盖或删除这些系统关键包,从而导致系统不稳定或失败。
PEP 668 通过在系统的 Python 安装目录中添加一个名为 EXTERNALLY-MANAGED 的文件来解决此问题。当 pip 检测到此文件时,它拒绝全局安装包,迫使您使用更安全的方法。
解决方案 1:最佳实践 - 使用虚拟环境(venv)
推荐且最稳健的解决方案是使用 虚拟环境。虚拟环境为每个项目创建一个隔离的、自包含的 Python 安装,使您能够安装、升级和删除包,而不影响全局系统或其他项目。
使用 venv 的逐步指南
-
确保安装了
venv: 在基于 Debian 的系统(如 Ubuntu)上,您可能需要安装venv模块:sudo apt-get install python3-venv -
导航到您的项目目录并运行以下命令(将 替换为您选择的名称,例如 ):





使虚拟环境对于 Python 开发至关重要的隔离原则,对于网络爬虫和数据收集等专业网络操作同样至关重要。
当您使用 Python 库(如