解决Linux下 pip install 出现 externally-managed-environment问题

问题所在

在 Archlinux、Manjaro、Ubuntu、Fedora等最新的linux发行版中运行 pip install 时,通常会收到一个错误提示:error: externally-managed-environment。
具体内容类似下面:

❯ sudo python -m pip install --user xyz
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.
    
    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.
    
    For more information visit http://rptl.io/venv

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

问题背后的原因

“externally-managed-environment”错误背后的原因:Manjaro、Ubuntu、Fedora 以及其他的最新发行版中,正在使用 Python 包来实现此增强功能。
这个更新是为了避免「操作系统包管理器 (如pacman、yum、apt) 和 pip 等特定于 Python 的包管理工具之间的冲突」。
这些冲突包括 Python 级 API 不兼容和文件所有权冲突。

解决方案

安全的解决方案(推荐)

方案1: 使用系统包管理器

# debian 系的系统
sudo apt install [替换为你要安装的包的名字]
# archlinux 系的系统
sudo pacman -S [替换为你要安装的包的名字]

方案2: 创建虚拟环境

要是坚持想使用 pip 可以试试这个方案。
原理:创建一个隔离的环境来管理 Python 包而不影响系统。

# debian 系的系统
sudo apt install python3-venv # 安装 venv
python3 -m venv myenv # 创建虚拟环境
source myenv/bin/activate # 激活虚拟环境
pip install some-package # 在虚拟环境下安装所需要的包

# archlinux 系的系统
python3 -m venv myenv # 创建虚拟环境
source myenv/bin/activate # 激活虚拟环境
pip install some-package # 在虚拟环境下安装所需要的包

冒险但简单的解决方案

方案3: 跳过系统限制

pip install [替换为你要安装的包的名字] --break-system-packages

方案4: 移除 /usr/lib/python3.11/EXTERNALLY-MANAGED

要是想一劳永逸,就直接执行下面命令去掉提示:

sudo mv /usr/lib/python3.11/EXTERNALLY-MANAGED /usr/lib/python3.11/EXTERNALLY-MANAGED.bak

再次使用 pip 安装你要的包,不出意外应该就可以顺利执行了。

posted @ 2025-01-31 16:15  JosiahBristow  阅读(2753)  评论(0)    收藏  举报