通过 pip3 安装时如何解决“错误:外部管理环境”

在新安装的 Manjaro 上,当我尝试运行pip3 install [something](无论是 Ansible 还是其他 Python 工具)时,我收到以下错误消息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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.

If you wish to install a non-Debian packaged Python application,
it may be easiest to use pipx install xyz, which will manage a
virtual environment for you. Make sure you have pipx installed.

See /usr/share/doc/python3.11/README.venv for more information.

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.

错误消息显示您可以传入标志,–break-system-packages但这听起来很可怕。我只是想让 pip 停止烦扰我,而是让我像多年来一样管理我的系统依赖项。

我认为一些 Python 开发人员确实希望像我这样的人使用虚拟环境,但当我真的不想这样做时,这太费力了,非常感谢。如果你想使用venv更多的力量给你。我只是喜欢在我的小服务器上完成工作。

因此,Manjaro 的解决方案至少是删除EXTERNALLY-MANAGED系统 Python 安装中的文件:

1
sudo rm -rf /usr/lib/python3.11/EXTERNALLY-MANAGED

请注意,python3.11版本号应与您安装的版本号相匹配 - 在撰写本博客文章时版本号为 3.11。

有关更多信息,请参阅Stack Overflow 上的答案。另一个有趣的选择是安装和使用pipxvenv ,它会为您完成管理 s 的繁重工作。

参考文章