Произвольные строки в bash выбрасывают python ошибок? - PullRequest
0 голосов
/ 28 февраля 2020

Что-то в моей настройке моей оболочки заставляет произвольные строки, такие как "krmpfl" или "u45g5svtJ7", создавать ошибку Python:

$> krmpfl

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'

Я ожидаю bash (а не python!), чтобы выдать ошибку типа «Неизвестная команда krmpfl. Вы имели в виду ...», но любая нераспознанная команда по какой-то причине передается в python. Я в замешательстве.

У кого-нибудь есть идеи по , как это отладить или как двигаться дальше? Я пробовал type krmpfl, но это (правильно) повторяет bash: type: krmpfl: not found

Мои настройки:

  • Win10 с использованием Ubuntu 18.04 в WSL
  • ConEmu в качестве консоли
  • Bash -it
  • Python 3.8
  • Клик (python пакет) установлен для упрощения создания команд

1 Ответ

2 голосов
/ 28 февраля 2020

Если ваша текущая функция оболочки определяет функцию с именем command_not_found_handle, bash запускает ее для несуществующей команды вместо немедленного сбоя с ошибкой «команда не найдена». В вашем случае эта функция существует и вызывает /usr/lib/command-not-found, который выглядит как Python скрипт, который пытается загрузить (или, по крайней мере, предложить вам скачать) пакет с apt_pkg, но у вас его нет Python модуль установлен, что приводит к исключению Python.

...