1.使用 APT 安装 Python 包

1.使用 APT 安装 Python 包

我升级到了 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如果我想在用户范围内(而不是系统范围内)安装软件包,该怎么办?我该怎么做?

答案1

OMGUbuntu 上有一篇关于此问题的好文章:解决 Ubuntu 23.04 上 Pip 安装错误的 3 种方法

以下是摘要。有三种方法可以解决这个问题:

1.使用 APT 安装 Python 包

例如,如果您想安装requestsPython 库,则可以使用 APT 安装它,如下所示:

sudo apt install python3-requests

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

并非所有 PyPI 上可用的软件包都已打包并包含在 Debian/Ubuntu 存储库中,因此此方法对某些软件包不起作用。

venv或者:2. 使用或创建虚拟环境virtualenv

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

点点可让您在隔离环境中安装和运行 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>

不推荐使用此方法,因为几个月或几年后,当你忘记使用--break-system-packages和安装了其他有冲突的 Python 包时,你可能会发现自己的 Python 包安装神秘地损坏了。

答案2

我在 Ubuntu 23.04 上遇到了同样的错误。我尝试了 pip install {package_name} --break-system-packages,它对我有用。希望它能有所帮助。谢谢。

答案3

在终端中,使用以下命令删除此文件:

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

一切都会好起来的!

答案4

我已经创建了 conda 虚拟环境,并且遇到了与 pip 相同的问题,所以conda install kafka-python对我有用

相关内容