You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安装Python3.11后Ubuntu 22.04出现红点提示及sudo apt update报错求助

安装Python3.11后Ubuntu 22.04出现红点提示及sudo apt update报错求助

嗨,刚接触Linux就碰到这种报错确实挺闹心的,别慌!这个问题基本是因为你安装Python3.11后,系统默认的Python3版本被替换成了3.11,但Ubuntu 22.04自带的apt相关工具(比如这里的cnf-update-db脚本)依赖系统原生的Python3.10,而Python3.11环境里没有apt_pkg模块,所以才触发了这个错误。下面给你几个实用的解决方法,你可以一步步试试:


方法一:给Python3.11创建apt_pkg模块的软链接

这个方法是让Python3.11能找到系统原生的apt_pkg模块:

  1. 先找到系统里的apt_pkg文件,执行命令:
    find /usr/lib/python3/dist-packages -name "apt_pkg*.so"
    
    你应该会得到类似这样的输出:/usr/lib/python3/dist-packages/apt_pkg.cpython-310-x86_64-linux-gnu.so(末尾后缀可能因架构略有不同)
  2. 切换到Python3.11的dist-packages目录:
    cd /usr/lib/python3.11/dist-packages/
    
  3. 创建软链接,把刚才找到的文件链接成Python3.11能识别的apt_pkg.so:
    sudo ln -s /usr/lib/python3/dist-packages/apt_pkg.cpython-310-x86_64-linux-gnu.so apt_pkg.so
    
  4. 现在再运行sudo apt update,看看报错是不是消失了。

方法二:修改cnf-update-db脚本的Python解释器

直接让报错的脚本用系统原生的Python3.10运行,绕开默认的Python3.11:

  1. 打开cnf-update-db脚本进行编辑:
    sudo nano /usr/lib/cnf-update-db
    
  2. 把脚本第一行的#!/usr/bin/python3改成#!/usr/bin/python3.10
  3. 保存并退出:按下Ctrl+O,回车确认保存,再按Ctrl+X退出编辑器
  4. 运行sudo apt update测试效果。

方法三:恢复系统默认的Python3版本

如果你不需要Python3.11作为系统默认的Python版本,直接改回原生的3.10最省心:

  1. 运行命令选择默认Python3版本:
    sudo update-alternatives --config python3
    
  2. 这时会列出所有可用的Python3版本,输入Python3.10对应的编号,回车确认
  3. 再次执行sudo apt update,应该就能正常运行了。

附上你提供的报错信息,方便其他朋友参考:

当我运行sudo apt update时,输出如下:

Ign:1 https://repo.vivaldi.com/stable/deb stable InRelease
Hit:2 https://repo.vivaldi.com/stable/deb stable Release
Hit:4 http://in.archive.ubuntu.com/ubuntu jammy InRelease
Hit:5 http://in.archive.ubuntu.com/ubuntu jammy-updates InRelease
Get:6 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Hit:7 https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu jammy InRelease
Fetched 110 kB in 3s (43.5 kB/s)
Traceback (most recent call last):
File "/usr/lib/cnf-update-db", line 3, in <module>
import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'
Reading package lists... Done
E: Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/lib/command-not-found/ -a -e /usr/lib/cnf-update-db; then /usr/lib/cnf-update-db > /dev/null; fi'
E: Sub-process returned an error code

我几乎试过所有方法但错误依然存在,我是Ubuntu/Linux社区的新手,求帮忙修复。我用的是Ubuntu 22.04 Desktop。

备注:内容来源于stack exchange,提问作者Sourav Shome

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 11:24:27