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

Pop!_OS 22.04切换默认Python至3.11后sudo apt update报错求助

解决Pop!_OS 22.04切换Python3.11后apt update报错问题

问题原因

系统自带的/usr/lib/cnf-update-db脚本依赖Python3.10的apt_pkg模块,当你将默认python3指向3.11后,脚本调用的Python环境中没有这个模块,因此抛出ModuleNotFoundError。


解决方案

方案1:为Python3.11安装apt_pkg兼容模块

  1. 安装Python3.11开发依赖:
    sudo apt install python3.11-dev python3-apt
    
  2. 找到apt_pkg的实际文件路径:
    find /usr/lib/python3/dist-packages -name "apt_pkg.*"
    
    输出示例:/usr/lib/python3/dist-packages/apt_pkg.cpython-310-x86_64-linux-gnu.so
  3. 创建软链接到Python3.11的模块目录:
    sudo ln -s /usr/lib/python3/dist-packages/apt_pkg.cpython-310-x86_64-linux-gnu.so /usr/lib/python3.11/site-packages/apt_pkg.so
    
    注意:替换命令中的文件名与你实际找到的一致。

方案2:修改cnf-update-db脚本的Python版本

直接指定脚本使用Python3.10运行,不受默认版本影响:

  1. 编辑脚本文件:
    sudo nano /usr/lib/cnf-update-db
    
  2. 将第一行的#!/usr/bin/python3修改为#!/usr/bin/python3.10
  3. 保存退出(按Ctrl+O回车确认,Ctrl+X退出)

方案3:保留系统默认Python3.10,按需使用3.11

如果不需要全局默认3.11,可通过以下方式使用:

  • 别名方式:在~/.bashrc或~/.zshrc中添加:
    alias python3='python3.11'
    
    执行source ~/.bashrc生效后,普通用户环境下python3指向3.11,而sudo仍使用系统默认的3.10,不影响apt相关脚本。
  • 虚拟环境方式:创建指定Python3.11的虚拟环境:
    python3.11 -m venv my_project_env
    source my_project_env/bin/activate
    
    激活后环境内默认使用Python3.11。

验证

执行以下命令切换回Python3.11为默认:

sudo update-alternatives --config python3

选择对应Python3.11的序号后,运行sudo apt update,确认错误消失。

内容的提问来源于stack exchange,提问作者Rezwoan Faisal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:45:34