ในกรณีของฉันถ้าฉันลองใช้คำสั่งใด ๆที่ไม่มีอยู่ใน bash shell ฉันจะได้รับข้อผิดพลาดขั้นต้นนี้:
$ 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'
ไม่มีคำตอบข้างต้นทำงานในกรณีของฉัน แม้ว่าปัญหานี้จะได้รับการแก้ไข แต่สิ่งนี้อาจช่วยได้ หากคุณยังคงมีปัญหานี้อยู่สิ่งนี้อาจช่วยได้:
ฉันติดตั้ง python3.6 จากที่เก็บ ppa.launchpad.net/jonathonf/python-3.6/ubuntu
และเห็นได้ชัดว่ามันหักบางสิ่ง
เมื่อคาดว่าจะติดตั้งแพคเกจcommand-not-found python3-commandnotfound python3-gdbm python3-gdbm-dbg sessioninstaller
ใหม่ฉันสังเกตเห็นว่า apt กำลังดึงแหล่งที่มาจากที่นี่:
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]
เพื่อแก้ไขปัญหาฉันเพียงแค่ลบที่เก็บ:
sed -i ' s/^/#/' /etc/apt/sources.list.d/jonathonf-ubuntu-python-3_6-xenial.list
และกว่ารันคำสั่งนี้อีกครั้ง (เป็น root):
apt update ; apt purge python3-gdbm ; apt install command-not-found python3-commandnotfound python3-gdbm python3-gdbm-dbg sessioninstaller
ตอนนี้ทุกอย่างทำงานได้อีกครั้ง:
$ lol
No command 'lol' found, did you mean:
Command 'sol' from package 'aisleriot' (main)
Command 'col' from package 'bsdmainutils' (main)
lol: command not found