You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Azure虚拟机上Ubuntu 18.04.6 LTS执行apt升级及neofetch时出现ModuleNotFoundError: No module named 'apt_pkg'错误

Azure虚拟机上Ubuntu 18.04.6 LTS执行apt升级及neofetch时出现ModuleNotFoundError: No module named 'apt_pkg'错误

我完全明白你遇到的困扰了——安装Python 3.10之后,系统默认的Python 3版本被切换,导致依赖系统原生Python版本的apt_pkg模块找不到,进而影响了apt命令和neofetch的正常运行。下面给你几个实用的解决办法:

方法一:恢复系统默认的Python 3版本(最稳妥的方案)

Ubuntu 18.04默认搭载的是Python 3.6,python3-apt就是针对这个版本编译的,把默认Python切回3.6就能解决问题:

  1. 先查看当前Python 3的指向,确认是否被改成了3.10:
    ls -l /usr/bin/python3
    
  2. 如果输出显示指向python3.10,就删除当前的软链接,重新关联到Python 3.6:
    sudo rm /usr/bin/python3
    sudo ln -s /usr/bin/python3.6 /usr/bin/python3
    
  3. 最后重新安装一次python3-apt,确保模块和默认Python版本正确关联:
    sudo apt-get install --reinstall python3-apt
    

方法二:为Python 3.10适配apt_pkg模块(保留3.10作为默认)

如果你想继续用Python 3.10作为系统默认版本,可以通过以下方式让它识别apt_pkg

快捷方式:创建软链接

  1. 先找到系统中原本的apt_pkg编译文件:
    find /usr/lib/python3 -name "apt_pkg*.so"
    
    你会得到类似/usr/lib/python3/dist-packages/apt_pkg.cpython-36m-x86_64-linux-gnu.so的路径
  2. 将这个文件软链接到Python 3.10的站点包目录:
    sudo ln -s /usr/lib/python3/dist-packages/apt_pkg.cpython-36m-x86_64-linux-gnu.so /usr/lib/python3.10/site-packages/apt_pkg.so
    
    注意替换成你实际查到的文件名

稳妥方式:重新编译安装python3-apt

如果软链接方式出现兼容性问题,可以尝试源码编译:

  1. 先安装编译所需的依赖:
    sudo apt-get install python3-dev libapt-pkg-dev
    
  2. 下载python3-apt的源码包:
    apt-get source python3-apt
    
  3. 进入下载好的源码目录(比如cd python3-apt-1.6.5ubuntu0.7,目录名根据你下载的版本调整):
  4. 针对Python 3.10编译并安装:
    sudo python3.10 setup.py install
    

问题根源说明

之所以会出现这个错误,是因为python3-apt是和系统默认的Python版本绑定编译的。Ubuntu 18.04默认的Python 3是3.6,当你安装Python 3.10并将其设为python3的默认指向后,系统执行apt相关的Python脚本时会调用3.10,但3.10并没有对应的apt_pkg模块,因此抛出了ModuleNotFoundError

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

火山引擎 最新活动