Trong trường hợp của tôi, nếu tôi thử chạy bất kỳ lệnh nào không tồn tại trong bash shell, tôi sẽ gặp lỗi thô này:
$ programthatdoesntexist
Traceback (most recent call last):
File "/usr/lib/python3.5/dbm/gnu.py", line 4, in <module>
from _gdbm import *
ImportError: No module named '_gdbm'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py", line 7, in <module>
import dbm.gnu as gdbm
File "/usr/lib/python3.5/dbm/gnu.py", line 6, in <module>
raise ImportError(str(msg) + ', please install the python3-gdbm package')
ImportError: No module named '_gdbm', please install the python3-gdbm package
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/command-not-found", line 27, in <module>
from CommandNotFound.util import crash_guard
File "/usr/lib/python3/dist-packages/CommandNotFound/__init__.py", line 3, in <module>
from CommandNotFound.CommandNotFound import CommandNotFound
File "/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py", line 9, in <module>
import gdbm
ImportError: No module named 'gdbm'
Không có câu trả lời nào ở trên làm việc trong trường hợp của tôi. Mặc dù vấn đề này đã được giải quyết, nhưng điều này có thể giúp được ai đó. Nếu bạn vẫn gặp phải vấn đề này, có thể điều này sẽ giúp:
Tôi đã cài đặt python3.6 từ kho lưu trữ ppa.launchpad.net/jonathonf/python-3.6/ubuntu
, và rõ ràng điều đó đã phá vỡ một số thứ.
Khi buộc cài đặt lại các gói command-not-found python3-commandnotfound python3-gdbm python3-gdbm-dbg sessioninstaller
, tôi nhận thấy apt đang lấy nguồn từ đây:
Get:1 http://ppa.launchpad.net/jonathonf/python-3.6/ubuntu xenial/main amd64 python3-gdbm amd64 3.6.5-3~16.04.york0.2 [14.6 kB]
Để khắc phục sự cố, tôi chỉ cần xóa kho lưu trữ đó:
sed -i ' s/^/#/' /etc/apt/sources.list.d/jonathonf-ubuntu-python-3_6-xenial.list
Và hơn là chạy lại lệnh này (với quyền root):
apt update ; apt purge python3-gdbm ; apt install command-not-found python3-commandnotfound python3-gdbm python3-gdbm-dbg sessioninstaller
Bây giờ, mọi thứ hoạt động trở lại:
$ lol
No command 'lol' found, did you mean:
Command 'sol' from package 'aisleriot' (main)
Command 'col' from package 'bsdmainutils' (main)
lol: command not found