当我打开终端时$ 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 导入路径:
vi .bashrc
(或 .profile)- 添加行
export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.7/site-packages:/usr/lib/python3/dist-packages
请注意,您可能需要更改/usr/local/lib/python3.7/site-packages
为您自己的目录。 - 退出并
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/pyton3
从python3.5
(或其他系统 python 版本,在 ubuntu16.04 中为 python3.5)重新链接到/usr/local/bin/python3
(或安装新 python 版本的其他位置)。我通过以下步骤解决了该问题:
- 使用检查python3符号链接
ls -la /usr/bin/python3*
。 - 如果它链接
/usr/local/bin/python3
或安装新 Python 版本的其他位置,请使用 将其删除sudo rm -f /usr/bin/python3
。 - 使用“sudo ln -s python3.5 /usr/bin/python3”将 python3 重新链接到系统 python3 版本,python3.5 是系统 python 版本,您可以在步骤 1 中确认它。
然后,当您执行未知命令时,错误消失。