前言
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
标签:bin,CommandNotFound,named,No,python,usr,版本,python3
From: https://www.cnblogs.com/niuben/p/18403920