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

Ubuntu 24 LTS安装Python3.10后执行sudo apt update触发ModuleNotFoundError: No module named 'apt_pkg'错误求助

Ubuntu 24 LTS安装Python3.10后执行sudo apt update触发ModuleNotFoundError: No module named 'apt_pkg'错误求助

嗨,这个问题我熟!本质原因是你装完Python3.10后,系统默认的python3指向可能被改成3.10了,但/usr/lib/cnf-update-db这个APT更新后自动运行的脚本,依赖的是系统原生Python3.12对应的apt_pkg模块,换了3.10自然找不到啦。

先还原下你遇到的错误场景:

Hit:1 http://security.ubuntu.com/ubuntu noble-security InRelease
Hit:2 http://archive.ubuntu.com/ubuntu noble InRelease
Hit:3 http://archive.ubuntu.com/ubuntu noble-updates InRelease
Hit:4 http://archive.ubuntu.com/ubuntu noble-backports InRelease
Traceback (most recent call last):
File "/usr/lib/cnf-update-db", line 3, in 
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'

给你几个实用的解决办法,按需选就行:

  • 临时快速修复法:直接修改脚本的Python版本指向
    打开那个出问题的脚本:

    sudo nano /usr/lib/cnf-update-db
    

    把第一行的#!/usr/bin/python3改成#!/usr/bin/python3.12,按Ctrl+O保存,Ctrl+X退出,再跑一遍sudo apt update,应该就不会报错了。这个方法最快,适合临时救急。

  • 彻底调整Python默认版本:让系统默认用3.12,按需调用3.10

    1. 先看看当前系统里Python3的备选版本:
      update-alternatives --list python3
      
    2. 如果已经有3.12和3.10的选项,直接运行下面的命令选择默认版本:
      sudo update-alternatives --config python3
      
      然后输入3.12对应的编号回车就行。
    3. 如果还没添加备选,先把两个版本加进去(优先级数字越大,默认优先级越高):
      sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 100
      sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 50
      
      这样系统默认python3就会指向3.12,你需要用3.10的时候直接输python3.10就行,既不影响系统脚本,也能正常用Python3.10。
  • 给Python3.10安装适配的apt_pkg模块(稍微麻烦点):
    先装Python3.10的开发包:

    sudo apt-get install python3.10-dev python3.10-distutils
    

    然后把系统3.12的apt_pkg模块软链接到3.10的目录里(注意文件名要根据你的系统实际情况调整,先去/usr/lib/python3/dist-packages/下看看具体的文件名):

    sudo ln -s /usr/lib/python3/dist-packages/apt_pkg.cpython-312-x86_64-linux-gnu.so /usr/lib/python3.10/site-packages/apt_pkg.so
    

    这个方法适合你确实需要让python3默认指向3.10的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 08:58:12