平常使用python较少,安装组件一直是直接pip安装,最近因为在统信os上使用打包的python,又在其它设备上测试,遇上了PEP668。

什么是PEP668

PEP 668 是 Python 的一项规范,用于将系统全局 Python 环境标记为“外部管理”,以避免 pip 与操作系统包管理器之间的冲突。
PEP 668 提出了一种机制,让 Python 安装向 pip 等工具传达其全局包安装环境由操作系统或其他外部方式管理,而不是由 Python 自身管理。

PEP668错误


在新版 Ubuntu 或其他 Linux 发行版中,当尝试在系统全局 Python 环境中使用 pip 安装包时,可能会看到类似:
error: externally-managed-environment
的错误提示。

解决方法

  • 使用venv
1
2
3
4
sudo apt install python3-venv
python3 -m venv myenv
source myenv/bin/activate
pip install pyinstaller

此时在提示符前会出现(myenv)。

  • 使用系统包管理器

对于系统级安装,优先使用操作系统提供的包管理器(如 apt install python3-xxx),而不是 pip。python3-tk,python3-qt5都是这样安装。

  • 强制安装

可以通过 pip 的 –break-system-packages 参数绕过 PEP 668,但可能影响系统稳定性,应谨慎使用。

  • 使用pipx
1
2
3
4
sudo apt install pipx
pipx ensurepath
pipx install package_name
pipx uninstall package_name