Windows11下Ubuntu20.04执行sudo apt update报错求助
Ubuntu 20.04 WSL2下
sudo apt update报错ModuleNotFoundError: No module named 'apt_pkg'解决方法 问题描述
在Windows 11的WSL2环境中运行Ubuntu 20.04.5 LTS时,执行sudo apt update出现如下错误:
Hit:5 http://archive.ubuntu.com/ubuntu focal-backports InRelease Fetched 114 kB in 2s (58.3 kB/s) Traceback (most recent call last): File "/usr/lib/cnf-update-db", line 8, in <module> from CommandNotFound.db.creator import DbCreator File "/usr/lib/python3/dist-packages/CommandNotFound/db/creator.py", line 12, 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.
已尝试的操作:
- 重新安装python3-apt:
sudo apt-get install python3-apt --reinstall
- 创建软链接:
cd /usr/lib/python3/dist-packages sudo ln -s apt_pkg.cpython-{34m,35m}-x86_64-linux-gnu.so apt_pkg.so sudo ln -s apt_pkg.cpython-{35m,36m}-x86_64-linux-gnu.so apt_pkg.so
问题根源
该错误源于command-not-found工具依赖的apt_pkg模块与当前系统默认Python版本不匹配。WSL环境中若手动修改过默认Python版本(比如从Ubuntu 20.04原生的Python3.8切换到更高版本),会触发此兼容性问题。
解决步骤
- 确认当前默认Python版本
执行命令查看Python3指向的版本:
python3 --version
- 彻底修复python3-apt包
先卸载损坏的包,再重新安装:
sudo apt purge python3-apt -y sudo apt autoremove -y sudo apt install python3-apt -y
- 创建匹配当前Python版本的软链接
先列出系统中存在的apt_pkg文件:
ls /usr/lib/python3/dist-packages/apt_pkg*.so
例如输出可能为apt_pkg.cpython-38m-x86_64-linux-gnu.so,然后为当前Python版本创建软链接(将38m替换为你实际的版本号):
cd /usr/lib/python3/dist-packages sudo ln -s apt_pkg.cpython-38m-x86_64-linux-gnu.so apt_pkg.so
- 重置默认Python版本(若修改过)
如果之前手动更改过默认Python3指向,执行以下命令恢复为系统原生的Python3.8:
sudo update-alternatives --config python3
在弹窗中选择对应Python3.8的选项编号即可。
- 验证修复结果
再次执行更新命令确认报错消失:
sudo apt update
内容的提问来源于stack exchange,提问作者Kevin Njuguna
相关产品推荐
相关产品推荐

