出现此错误是因为您的环境已根据[PEP 668]标记为“外部管理”(https://peps.python.org/pep-0668/). 这样做是为了防止通过“apt”和“pip”包管理器安装的包之间发生冲突。
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.
解决方法1:
在安装包时加上 --break-system-packages
pip install 包名 --break-system-packages
例:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple paho-mqtt --break-system-packages
解决方法2:
这个问题的原因是开发者希望你用虚拟环境,venv是Python的虚拟环境管理工具,它可以创建独立的Python环境,让不同项目使用不同的Python版本和依赖库,避免版本冲突和依赖冲突问题。使用Python venv可以方便地创建、激活、退出、删除虚拟环境,以及在虚拟环境中安装、升级、卸载包等操作。创建虚拟环境操作如下:
-
创建虚拟环境命令:
python -m venv myenv # myenv 为要创建的虚拟环境名字(虚拟环境工作目录)
-
激活虚拟环境:
- On Linux/Mac:
source myenv/bin/activate
- On Windows:
myenv\Scripts\activate
- On Linux/Mac:
-
然后再用pip安装:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple paho-mqtt
此解决方案创建了一个单独的环境,您可以在其中安装Python包,而不会干扰系统范围的包。
解决方法3:
如果不想用虚拟环境,也不行pip唠叨,那么就删除EXTERNALLY-MANAGED文件,(在Debian 12上是可以的)
sudo rm -rf /usr/lib/python3.11/EXTERNALLY-MANAGED
解决方法4:
使用 pipx,pipx 工具允许你在隔离的虚拟环境中安装和运行 Python 应用,它是一个跨平台的自由开源程序,可以在 Linux、Mac OS 和 Windows 上运行。
1、安装
sudo apt install pipx
pipx ensurepath
2、使用
pipx install 安装包
3、管理
pipx list
:列出所有通过pipx安装的工具。pipx uninstall some-tool
:卸载名为some-tool
的工具。pipx upgrade some-tool
:升级名为some-tool
的工具到最新版本。
问 pipx 与 pip 的区别与联系?
文心一言的回答如下:
pip和pipx都是Python的包管理工具,但它们在功能、使用方式、环境管理以及安装路径等方面存在一些显著的区别。
- 功能和使用方式:
- pip是一个包管理器,主要用于安装Python包和库。使用pip安装包时,你需要使用命令
pip install <包名>
,然后包将被安装到系统范围的Python环境中。 - pipx是一个工具管理器,专注于安装和管理Python工具。使用pipx安装工具时,你需要使用命令
pipx install <工具名>
,然后工具将被安装到独立的虚拟环境中,并自动创建一个可执行的二进制文件。
- 环境管理:
- pip安装的包会被放在Python的系统环境中,这意味着它们对系统的其他Python程序是可见的。
- pipx则创建独立的虚拟环境来安装和管理工具,这些工具与系统范围的Python环境相隔离。这意味着在一个pipx环境中安装的工具不会干扰或影响其他环境或其他Python程序。
- 安装路径:
- pip安装的包路径是Python环境的一部分,通常是
/usr/local/lib/python3.x/site-packages
(在Linux和Mac上)或C:\Python3.x\Lib\site-packages
(在Windows上)。 - pipx创建的环境路径位于用户主目录的
.local/pipx/venvs
下。
pip和pipx的联系在于它们都是为了方便Python开发者管理和安装软件包和工具而设计的工具。pipx在设计和功能上是对pip的一种补充,它提供了更加灵活和隔离的环境管理功能,特别适用于需要安装多个版本或避免环境干扰的场景。
总的来说,pip和pipx各有其特点和适用场景。对于一般的Python包管理需求,pip已经足够使用。而如果你需要更加灵活和隔离的环境管理,或者需要安装多个版本的Python工具,那么pipx将是一个很好的选择。