Yuhang Zheng

高版本系统使用pip命令安装python模块报错

N 人看过

在Ubuntu 23.04运行 pip 命令(使用 sudo apt install python3-pip 安装)时,出现以下错误:

$ pip install --user <foobar>
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.

如果想在用户范围( --user )而不是系统范围安装软件包怎么办呢?

可以参考这篇文章:3 Ways to Solve Pip Install Error on Ubuntu 23.04

简而言之,有三种方法可以解决这个问题。

1、使用APT安装Python包

例如,如果想安装 requests Python 库,可以使用 APT 来安装它,如下所示:

sudo apt install python3-requests

这将在系统范围内安装该库。

然而并非 PyPI 上提供的所有软件包都已打包并包含在 Debian/Ubuntu的APT资源库中,因此此方法不适用于某些软件包。

2、使用 venvvirtualenv 创建虚拟环境

通过运行以下命令确保已安装 venv

sudo apt install python3-venv

要在名为 .venv 的目录中创建新的虚拟环境,请运行:

python3 -m venv .venv

要激活此虚拟环境(修改 PATH 环境变量),请运行以下命令:

source .venv/bin/activate

现在你可以在这个虚拟环境中安装像 requests 这样的库:

pip install requests

这些文件将安装在 .venv/ 目录下。

如果你想离开虚拟环境,可以运行:

deactivate

如果您不想运行 source .venv/bin/activatedeactivate ,则可以通过为其路径添加前缀来运行可执行文件,如下所示:

 $ .venv/bin/pip install requests
 $ .venv/bin/python3
 >>> import request
 >>> help(requests)

3、使用 pipx

pipx 允许在隔离环境中安装和运行 Python 应用程序。这是安装代表命令行应用程序的 PyPI 包的推荐方法。

要安装 pipx,请运行:

sudo apt install pipx

pipx 需要 ~/.local/bin/ 位于您的 PATH 中。您可以通过运行以下命令自动修改 shell 配置(例如 ~/.bashrc )以适当地修改 PATH:

pipx ensurepath

(您可能需要关闭终端应用程序并再次打开它才能使更改生效。)

现在您可以从 PyPI 安装软件包,如下所示:

pipx install pycowsay

您可以运行刚刚安装的命令,如下所示:

$ pycowsay Mooo!

  -----
< Mooo! >
  -----
   \   ^__^
    \  (oo)\_______
       (__)\       )\/\
           ||----w |
           ||     ||

如您所见,pipx 在 ~/.local/bin/ 中安装了指向虚拟环境中可执行文件的符号链接:

$ ls -l ~/.local/bin/pycowsay
lrwxrwxrwx 1 flimm flimm 50 May 24 11:19 /home/flimm/.local/bin/pycowsay -> /home/flimm/.local/pipx/venvs/pycowsay/bin/pycowsay*

4、 追加 --break-system-packages 参数

如果你想忽略警告,可以传递 --break-system-packages 参数:

pip install --break-system-packages --user <foobar>

不建议使用此方法,因为几个月或几年后,您可能会发现自己的 Python 软件包安装出现了神秘的损坏,而您忘记了您使用过 --break-system-packages 并安装了其他冲突的 Python 软件包。