安装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模块:
- 先找到系统里的
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(末尾后缀可能因架构略有不同) - 切换到Python3.11的dist-packages目录:
cd /usr/lib/python3.11/dist-packages/ - 创建软链接,把刚才找到的文件链接成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 - 现在再运行
sudo apt update,看看报错是不是消失了。
方法二:修改cnf-update-db脚本的Python解释器
直接让报错的脚本用系统原生的Python3.10运行,绕开默认的Python3.11:
- 打开
cnf-update-db脚本进行编辑:sudo nano /usr/lib/cnf-update-db - 把脚本第一行的
#!/usr/bin/python3改成#!/usr/bin/python3.10 - 保存并退出:按下
Ctrl+O,回车确认保存,再按Ctrl+X退出编辑器 - 运行
sudo apt update测试效果。
方法三:恢复系统默认的Python3版本
如果你不需要Python3.11作为系统默认的Python版本,直接改回原生的3.10最省心:
- 运行命令选择默认Python3版本:
sudo update-alternatives --config python3 - 这时会列出所有可用的Python3版本,输入Python3.10对应的编号,回车确认
- 再次执行
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
相关产品推荐
相关产品推荐

