Ubuntu Error: No module named 'apt_pkg' 怎么办?

ubuntu经常用要添加PPA源,就是使用如下命令:

sudo add-apt-repository ppa:XXX

但不知什么时候开始,就出现了错误Error: No module named 'apt_pkg' 。

这个问题困扰我好久了,每次想解决,在网上忙活半天都没有找到解决办法。

今天我找到了答案。

第一步:sudo gedit /usr/bin/apt-add-repository

我们会发现所谓"apt-add-repository"命令其实就是一个python脚本,而且最上面一行写着:#! /usr/bin/python3

说明这是一个python3脚本。

第二步:sudo ls -l /usr/bin/python3

显示:/usr/bin/python3 -> python3.5

说明在我的ubuntu上python3是链接到python3.5的 。问题就在这个python3.5上。

第三步:

cd /usr/lib/python3/dist-packages/

ls apt_pkg*

显示: apt_pkg.cpython-34m-x86_64-linux-gnu.so (注意看显示的信息是否和我这个一致,如果不一致后面的例如:apt_pkg.cpython-35m-x86_64-linux-gnu.so 后面操作请改成具体显示的文件名)

注意其中34m这个字样,这表示只有python3.4可以安全使用这个组件!而我们电脑python3是链接到python3.5的!

不同的ubuntu版本不一定显示34m,所以一定要自己去查查看这个文件。然后修改python3链接到对应版本。

说到这里解决办法就很简单了。

第四步:

sudo rm /usr/bin/python3

sudo ln -s /usr/bin/python3.4 /usr/bin/python3 (具体根据文件下的文件名字版本)

大功告成! 快去试试看apt-add-repository命令是不是可以用了!

最终奥义!!!

sudo apt-get remove --purge python-apt

sudo apt-get install python-apt -f

sudo find / -name "apt_pkg.cpython-35m-x86_64-linux-gnu.so" (注意看显示的信息是否和我这个一致,如果不一致后面的例如:apt_pkg.cpython-34m-x86_64-linux-gnu.so 后面操作请改成具体显示的文件名)

cd /usr/lib/python3/dist-packages/

sudo cp apt_pkg.cpython-35m-x86_64-linux-gnu.so apt_pkg.cpython-36m-x86_64-linux-gnu.so (具体根据文件下的文件名字版本)