python ModuleNotFoundError:'CommandNotFound'

python ModuleNotFoundError:'CommandNotFound'

当我打开终端时$ pip install -U pip setuptools,收到一条错误消息。

Traceback (most recent call last):
  File "/usr/lib/command-not-found", line 27, in <module>
    from CommandNotFound.util import crash_guard
ModuleNotFoundError: No module named 'CommandNotFound'

我使用的是python3.5,它的路径是/usr/bin/python3.5

我尝试查找 CommandNotFound 包但找不到它。

我该如何修复这个错误?


[编辑]:操作系统 Ubuntu 16.04.3 LTS

答案1

再添加一个答案,因为我也遇到了这个问题并且碰巧解决了它。
当我从源代码安装python3.7时发生了此问题。

检查 /usr/lib/command-not-found 文件,它试图查找模块CommandNotFound,该模块未随 python3.7 附带,但随 Ubuntu 目录附带/usr/lib/python3/dist-packages

我们需要做的是将目录添加到 python 导入路径:

  1. vi .bashrc(或 .profile)
  2. 添加行
    export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.7/site-packages:/usr/lib/python3/dist-packages
    请注意,您可能需要更改/usr/local/lib/python3.7/site-packages为您自己的目录。
  3. 退出并source .bashrc(或 .profile)

答案2

关联

解决方案:与我之前提到的不同,我的python3.5.1安装没有被更新删除。它仍然在 下/usr/local/bin/python3.5

跟踪错误:我写了几行调试代码/usr/lib/python3.5/_sysconfigdata.py

print("python-version", sys.version_info)
print("python-gcc-version",sys.version)
print("python-executable",sys.executable)

/usr/bin/python3调用和时的输出不同rhythmbox,但python-executable两种方式都是/usr/bin/python3

当我使用 where is python3 搜索错误安装并删除时

/usr/local/bin/python3.5

然后我清除并重新安装了 python3 并运行apt install -f。所以这个错误消失了。

请记住:如果它有时可能在存储库中,则永远不要从源代码安装东西,或者至少在包管理器安装它之前将其删除。

答案3

看来您已从源代码安装了新的 python3 版本,并将符号链接/usr/bin/pyton3python3.5(或其他系统 python 版本,在 ubuntu16.04 中为 python3.5)重新链接到/usr/local/bin/python3(或安装新 python 版本的其他位置)。我通过以下步骤解决了该问题:

  1. 使用检查python3符号链接ls -la /usr/bin/python3*
  2. 如果它链接/usr/local/bin/python3或安装新 Python 版本的其他位置,请使用 将其删除sudo rm -f /usr/bin/python3
  3. 使用“sudo ln -s python3.5 /usr/bin/python3”将 python3 重新链接到系统 python3 版本,python3.5 是系统 python 版本,您可以在步骤 1 中确认它。

然后,当您执行未知命令时,错误消失。

相关内容