ModuleNotFoundError: нет модуля с именем "apt_pkg"
Если я запускаю несуществующую команду в терминале (как, например, lasdfese
или vlsefoserlks
) Я получаю вывод ниже. Зачем? Как вернуться к нормальному поведению? Я мог бы добавить, что это произошло после обновления до python3.8, и что я использую Ubuntu 18.04.
Traceback (most recent call last):
File "/usr/lib/command-not-found", line 28, in <module>
from CommandNotFound import CommandNotFound
File "/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py", line 19, in <module>
from CommandNotFound.db.db import SqliteDatabase
File "/usr/lib/python3/dist-packages/CommandNotFound/db/db.py", line 5, 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 24, 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/lib/command-not-found", line 28, in <module>
from CommandNotFound import CommandNotFound
File "/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py", line 19, in <module>
from CommandNotFound.db.db import SqliteDatabase
File "/usr/lib/python3/dist-packages/CommandNotFound/db/db.py", line 5, in <module>
import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'
2 ответа
Я была такая же проблема. Я решил это.
Есть скрипт на Python под названием
command-not-found
в
/usr/lib/command-not-found
.
Этот скрипт обновляется после обновления версии Python. По крайней мере, так случилось со мной. Я перешел с Python3.6 на Python3.8.
Теперь проблема в том, что этот скрипт работает на основе предыдущей версии Python. Итак, я вошел в этот файл и изменил первую строку с
#!/usr/bin/python3
(который относится к python3.8)
кому:
#!/usr/bin/python3.6
(это версия Python, поставляемая с Ubuntu 18.04)
Я столкнулся с той же ошибкой с командой «ubuntu-drivers devices». Вдохновленный ответом @flowfelis, я обновил версию Python, и это решило проблему.
$ sudo update-alternatives --config python3
There are 2 choices for the alternative python3 (providing /usr/bin/python3).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/bin/python3.7 2 auto mode
* 1 /usr/bin/python3.7 2 manual mode
2 /usr/bin/python3.8 1 manual mode
Press <enter> to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/bin/python3.8 to provide /usr/bin/python3 (python3) in manual mode