通知 欢迎关注我的店铺天天软件圆

安装Python包时提示“externally-managed-environment”

2026-03-22
0评论
/
阅读
爱搜啊

最近装Python包的时候踩了个大坑,终端直接给我弹了个“externally-managed-environment”的报错,死活装不上包。一开始我还以为是网络问题,试了换源、重启终端,全没用!后来查了半天才发现,是新版Python的环境管理机制搞的鬼,尤其是Debian、Ubuntu这些系统自带的Python,默认就锁死了全局环境,你想直接pip装包?门都没有!

安装Python包时提示“externally-managed-environment”

先看报错长啥样

我当时看到的报错大概是这样的,你们感受下:

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 name.
    
    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/pip to install packages.
    
    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 pipx is installed via apt.

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装,要么自己建虚拟环境,要么用pipx!” 我就想装个简单的包而已,至于这么麻烦吗??

为啥会出这个错?

后来我才搞明白,这是PEP 668的规定,简单说就是系统怕你乱装包把全局Python环境搞崩了,所以加了个保护机制。尤其是Ubuntu 23.04、Debian 12之后的版本,默认就开启这个限制了。你以为就我遇到?身边几个朋友升级系统后都踩了这坑,真的太坑了!

解决方案1:用系统apt装(最稳,但可选包少)

系统推荐的方式是用apt装,比如你想装requests,就输这个命令:

sudo apt install python3-requests

这方法确实稳,不会乱环境,但问题是!很多第三方包根本没有对应的apt包,比如一些小众的库、最新版本的包,apt里根本找不到,这方法等于白给!我当时想装的那个包就没有apt版本,气得我想砸键盘!

解决方案2:建虚拟环境(推荐,就是有点麻烦)

没办法,只能按系统说的建虚拟环境了,步骤是这样的:

  1. 先建个虚拟环境目录,比如我建在~/myvenv:

python3 -m venv ~/myvenv
  1. 激活虚拟环境:

source ~/myvenv/bin/activate

激活后终端前面会多个(myvenv)标识,这时候再装包就随便装了,比如:

pip install requests
  1. 不用了就退出虚拟环境:

deactivate

这方法是最规范的,但每次用都要激活、退出,我这种懒人真的嫌麻烦!而且换个项目还要重新建环境,装一堆重复的包,太费空间了!

解决方案3:用pipx装(适合装命令行工具)

如果是装那种能直接在终端用的工具,比如black、pytest这些,用pipx更方便,先装pipx:

sudo apt install pipx
pipx ensurepath

然后装包,比如装black:

pipx install black

这方法不用手动管虚拟环境,pipx会自动处理,但仅限命令行工具,要是想在项目里导入的包,还是得用虚拟环境,我试了下,确实只能装可执行的工具,局限性也挺大!

解决方案4:强行突破(不推荐,容易出问题)

实在嫌麻烦的话,也可以加--break-system-packages参数强行装,比如:

pip install requests --break-system-packages

我当时实在急着用,就试了这个方法,确实装上了,但系统提示说可能会搞崩Python环境,我现在都有点慌,怕后续用其他包的时候出问题!真的不建议随便用,除非你真的不在乎系统环境!

总结下我的感受

折腾了这么久,总算把包装上了,但真的太折腾了!新版Python这机制虽然是为了保护环境,但对我们这种新手太不友好了,一开始完全摸不着头脑。如果是做项目,还是老老实实建虚拟环境吧,虽然麻烦点,但至少不会出问题;要是临时用个小工具,pipx也还行;实在没办法再考虑强行突破,千万别随便用!你们有没有遇到过这问题?是不是也跟我一样觉得特无语?


点击链接加入群聊四群:722808830
点击链接加入群聊三群:751529538(已满)
点击链接加入群聊二群:376877156(已满)
点击链接加入群聊一群:622891808(已满)

饿了么红包
饿了么红包


本站附件分享,如果附件失效,可以去找找看

诚通网盘附件百度网盘附件

标签: Python
于2026-03-22发布