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
Другие вопросы по тегам