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
posted @ 2024-09-09 09:16  牛奔  阅读(108)  评论(0编辑  收藏  举报