执行apt-get update 报错ModuleNotFoundError: No module named ‘apt_pkg‘的解决方案汇总
Ubuntu版本ubuntu18.04
报错内容:
//执行apt-get upgrade报错:
Traceback :File “/usr/lib/cnf-update-db”, line 8, in <module>from CommandNotFound.db.creator import DbcreatorFile “/usr/lib/python3/dist-packages/CommandNotFound/db/creator.py”, line 11, 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/cnfupdate-db; then /usr/lib/cnf-update-db> /dev/null; fi"
E: Sub-process returned an error code.
问题原因:
在 Ubuntu 18.04 中遇到 ModuleNotFoundError: No module named ‘apt_pkg’ 错误,通常是因为 python3-apt 包损坏或版本不兼容。
详细错误原因
apt_pkg 是 python3-apt 包的组成部分,用于 Python 与 APT 交互。
当该包损坏、版本不匹配或 Python 环境路径错误时,会触发此错误。
解决措施:
(我的上面的报错,从第一步执行到第四步就解决了):
1. 修复 python3-apt 包
重新安装关键包:
# 先清理可能的残留配置
sudo apt-get clean
sudo apt-get autoclean# 强制重新安装 python3-apt 和相关包
sudo apt-get install --reinstall python3-apt
sudo apt-get install --reinstall command-not-found
2. 检查 Python 模块路径
确保 apt_pkg 模块的路径正确:
# 查找 apt_pkg 模块位置
find /usr/lib/python3/dist-packages -name "apt_pkg*.so"# 预期输出类似:
# /usr/lib/python3/dist-packages/apt_pkg.cpython-36m-x86_64-linux-gnu.so
如果路径存在但名称不匹配,手动创建符号链接:
# 进入 Python 模块目录
cd /usr/lib/python3/dist-packages# 创建符号链接(替换实际文件名)
sudo ln -s apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.so
3. 更新软件源并修复依赖
# 更新软件源列表
sudo rm -rf /var/lib/apt/lists/*
sudo apt-get update# 修复依赖关系
sudo apt-get install -f
sudo dpkg --configure -a
4. 如果仍报错,尝试强制修复
# 强制重新安装所有关键包
sudo apt-get install --reinstall ubuntu-release python3-minimal python3.6
5. 检查 Python 版本兼容性
Ubuntu 18.04 默认使用 Python 3.6,如果手动升级过 Python 版本(如 3.8/3.10),可能导致兼容性问题。
解决方法:
- 回退到系统默认 Python 3.6,或
- 重新编译 python3-apt 以匹配新版本(复杂,不推荐)。
6. 终极方案(谨慎操作)
如果以上方法无效,尝试升级到更新的 Ubuntu 版本(如 20.04/22.04),但需备份数据:
# 先升级到 18.04 的最新状态
sudo apt-get update && sudo apt-get dist-upgrade# 安装升级工具
sudo apt-get install update-manager-core# 启动系统升级
sudo do-release-upgrade
7.验证修复
重新运行命令测试:
sudo apt-get update
sudo apt-get upgrade
若问题解决,apt 操作应恢复正常。如果仍有问题,请检查日志 /var/log/apt/term.log 获取更多细节。