Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ModuleNotFoundError No module named apt_pkg

Tags:

python

linux

apt

I am trying to add a repo using command

 sudo add-apt-repository ppa:gezakovacs/ppa

Following is complete error -

    Traceback (most recent call last):
File "/usr/bin/add-apt-repository", line 11, in <module> from softwareproperties.SoftwareProperties import SoftwareProperties, shortcut_handler
File "/usr/lib/python3/dist-packages/softwareproperties/SoftwareProperties.py", line 27, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'
Error in sys.excepthook:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, 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 23, in <module>
    import apt
File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

Original exception was:
Traceback (most recent call last):
File "/usr/bin/add-apt-repository", line 11, in <module> from softwareproperties.SoftwareProperties import SoftwareProperties, shortcut_handler
File "/usr/lib/python3/dist-packages/softwareproperties/SoftwareProperties.py", line 27, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

getting above error.

I have install python2 , Python3.5 & Python3.6 installed on Xubuntu 16.04. Does it causing any issue???

like image 636
user1184294 Avatar asked Feb 08 '18 04:02

user1184294


3 Answers

If you look at /usr/bin/add-apt-repository it says

#!/usr/bin/python3

at the top. If you updated with a newer python (e.g. dist had 3.5 but you installed 3.7) your /usr/bin/python3 points to a python that does not have apt_pkg.

You can temporarily edit /usr/bin/add-apt-repository to point to

#!/usr/bin/python3.5

(insert your distro python version)

like image 125
laktak Avatar answered Oct 20 '22 23:10

laktak


This is likely because you switched python versions in a weird way. Do you have /usr/lib/python3/dist-packages/apt_pkg.so ? This can be missing if you removed a version of python.

The answer that worked for me was this from askubuntu forums:

ln -s /usr/lib/python3/dist-packages/apt_pkg.cpython-36m-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/apt_pkg.so
like image 21
K.S. Avatar answered Oct 20 '22 22:10

K.S.


I had a similar problem, when doing apt-get upgrade... The problem is that apt-get was trying to use python2.7, but the symlink was pointing to python3.4:

debian:/usr/bin# cat /etc/debian_version
8.10
debian:/usr/bin# ll /usr/bin/python
lrwxrwxrwx 1 root root 18 Feb 26 17:02 /usr/bin/python -> /usr/bin/python3.4

Fixed it by creating a new symlink

debian:/usr/bin# rm /usr/bin/python
debian:/usr/bin# ln -s /usr/bin/python2.7 /usr/bin/python
like image 26
ptoxic Avatar answered Oct 20 '22 22:10

ptoxic