python3 ModuleNotFoundError: No module named 'CommandNotFound'
前言
python3 报错:ModuleNotFoundError: No module named 'CommandNotFound'
这是 linux
安装多版本 python
时的一个遗留问题, 如果修改了默认系统的 /usr/bin/python
的软连接到新安装的版本,然后在 /usr/bin
下将名为 python3
的软链接指向了新版本的 python
。
因为 Python
版本不同,Python
的模块有些许的不同,而新版本的 python
没有CommandNotFound
模块, 可以会报错如下
Traceback (most recent call last):
File "/usr/lib/cnf-update-db", line 8, in <module>
from CommandNotFound.db.creator import DbCreator
ModuleNotFoundError: No module named 'CommandNotFound'
Reading package lists... Done
E: Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/lib/command-not-found/ -a -e /usr/lib/cnf-update-db; then /usr/lib/cnf-update-db > /dev/null; fi'
E: Sub-process returned an error code
解决
第一种
修改 cnf
配置文件到原来的系统 python
版本即可, 比如 ubuntu18.04
默认是 python3.6
, 那就修改为 3.6
, 不然因为修改了软连接到新版本, 比如 python3.12
, 所以报错 CommandNotFound
vim /usr/lib/cnf-update-db
然后将第一行改为 #!/usr/bin/python3.6
即可(注意这里python3.6是我系统自带的python版本)。
第二种
# 移除旧版本
sudo rm /usr/bin/python3
# 更换默认python3的版本为3.12
ln -s /usr/bin/python3.12 /usr/bin/python3
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!