【问题标题】:Arbitrary strings in bash throw python errors?bash 中的任意字符串会引发 python 错误?
【发布时间】:2020-02-28 20:43:20
【问题描述】:

我的 shell 设置中的某些内容会导致诸如“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 在 WSL 中使用 Ubuntu 18.04
  • ConEmu 作为控制台
  • Bash-it
  • Python 3.8
  • 点击安装(python包)简化创建命令

【问题讨论】:

    标签: python bash ubuntu windows-subsystem-for-linux


    【解决方案1】:

    如果您当前的 shell 函数定义了一个名为 command_not_found_handle 的函数,bash 会针对不存在的命令运行该函数,而不是立即失败并出现“找不到命令”错误。在您的情况下,该函数存在并调用/usr/lib/command-not-found,这似乎是一个Python脚本,它试图下载(或至少建议您下载)带有apt_pkg的包,但您没有安装该Python模块,这会导致 Python 异常。

    【讨论】:

      猜你喜欢
      • 2013-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-04
      • 2020-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多