我最近将操作系统更改为 Debian 12。之前,当我想安装一些 python 软件包时,我使用了
pip install <package>
。但现在,我收到此错误消息:
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.
处理 python 包的最佳方法是什么?现在,如果可能的话,我会在系统范围内安装它们(
apt install -y python3-<package>
),但有时这些软件包在我的存储库中不可用。我读过一些关于 venv 的内容,但我不太理解它。如果我按照使用虚拟环境安装包的步骤操作,则会创建一个名为 .venv 的目录,但我应该在我的 HOME 或每个 python 项目文件夹上创建此目录吗?如果我需要以 root 用户身份执行 python 程序怎么办?会从用户HOME目录中获取虚拟环境吗?
我想学习如何以最好的“健康”方式处理python,就目前而言,我想最好的选择是在系统范围内安装软件包,但是当不可能时,我应该如何处理?使用
--break-system-packages
似乎并不正确。
如果您正在使用一些Python程序(不是开发它们),我建议使用pipx来安装它们。 Pipx 将为您的工具创建一个虚拟环境。
安装pipx:
sudo apt install pipx
pipx ensurepath
及其使用后:
pipx install <package>
已安装软件包的升级是这样完成的:
pipx upgrade-all