Ubuntu ImportError: No module named ‘apt_pkg’ 错误的解决方法

已关闭留言

今天折腾了一下午的服务器,有台服务器之前其他同学装了个 Ubuntu 17.04,现在发现更新不了了,源都没有了。由于急需使用,所以需要解决这个问题。在 Ubuntu 17.04 升级 18.04 的过程中遇到了不少问题,在这里尽可能的记录一些,其他的大大小小的问题不可能都记录全。本文记录的是 No module named 'apt_pkg' 这个错误,没想到 Ubuntu 的 apt 居然也需要依赖 Python 的包,在此记录一下解决这个问题的方法。

总之还是比较难搞,最后一切问题都搞完准备 do-release-upgrade 的时候,提示需要重启,一重启,服务器直接连不上了。真的是给跪下了,到现在也不知道怎么搞,只能等待开学之后去机房看看具体问题了。

文章目录
隐藏
一、问题描述
二、解决方法

一、问题描述

由于我并没有保存具体错误信息,网上找了一份错误信息,大概就是下面这样子:

jacopo@jacopo-laptop:~$ update-manager 
Traceback (most recent call last):
  File "/usr/bin/update-manager", line 28, in <module>
    from gi.repository import Gtk
  File "/usr/lib/python3/dist-packages/gi/__init__.py", line 27, in <module> from ._gi import _API
ImportError: No module named 'gi._gi'
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 64, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module>
    from apport.packaging_impl import impl as packaging
  File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 20, in <module>
import apt
File "/usr/lib/python3/dist-packages/apt/__init__.py", line 21, in <module>
import apt_pkg
ImportError: No module named 'apt_pkg'

二、解决方法

下面几个方法并不是并列的顺序,而是建议依次尝试。如果方法一不行,再尝试方法二。

方法一:重装 apt_pkg

sudo apt-get install --reinstall python3-apt

不一定有效,可能重装完还是会提示错误。

方法二:手动复制 apt_pkg 文件

cd  /usr/lib/python3/dist-packages
ls -la /usr/lib/python3/dist-packages
sudo cp apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.so

注意需要把上面的 apt_pkg.cpython* 这个换成你系统里对应的具体的文件名。

我目前使用了方法二是亲测解决了问题。

如果提示 cp 错误,尝试下面命令:

sudo unlink apt_pkg.so

然后重新 cp 就行了。

方法三:设置正确 Python 链接

update-alternatives  --set python3  /usr/bin/python3.6

方法四:

cd /usr/lib/python3/dist-packages
sudo ln -s apt_pkg.cpython-{35m,34m}-x86_64-linux-gnu.so

上面的方法三和方法四并未尝试,具体方法来源:

  • https://askubuntu.com/questions/480908/problem-with-update-manager-no-module-named-apt-pkg-in-ubuntu-13-10-having-i