我我正在运行 Ubuntu 18.04我注意到在屏幕的左上角,突然出现了这个图标。我以为只是短暂断线而已,所以没太担心。
现在,每当我运行时,sudo apt-get update
进程都会因以下错误而停止:
Hit:1 http://it.archive.ubuntu.com/ubuntu bionic InRelease
Hit:2 http://it.archive.ubuntu.com/ubuntu bionic-updates InRelease
Hit:3 http://it.archive.ubuntu.com/ubuntu bionic-backports InRelease
Hit:4 http://security.ubuntu.com/ubuntu bionic-security InRelease
Hit:5 http://packages.ros.org/ros/ubuntu bionic InRelease
Hit:6 https://download.sublimetext.com apt/stable/ InRelease
Traceback (most recent call last):
File "/usr/lib/cnf-update-db", line 8, in <module>
from CommandNotFound.db.creator import DbCreator
File "/usr/lib/python3/dist-packages/CommandNotFound/db/creator.py", line 11, in <module>
import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'
Error in sys.excepthook:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
from apport.fileutils import likely_packaged, get_recent_crashes
File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
from apport.report import Report
File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
import apport.fileutils
File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module>
from apport.packaging_impl import impl as packaging
File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 24, in <module>
import apt
File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module>
import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'
Original exception was:
Traceback (most recent call last):
File "/usr/lib/cnf-update-db", line 8, in <module>
from CommandNotFound.db.creator import DbCreator
File "/usr/lib/python3/dist-packages/CommandNotFound/db/creator.py", line 11, in <module>
import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'
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
在看到这样的图标之前,我记得做的唯一一件“邪恶”的事就是输入sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 0
优先考虑这个较新版本的 Python。
由于从错误中我可以看到一些 python 导入失败,所以我想说清楚。
到目前为止,我已经尝试过:
- sudo apt-get clean
- sudo dpkg--configure-a
- sudo apt-get 自动删除
- sudo apt-get 升级
- sudo apt-get 安装 apt_pkg -->
E: Unable to locate package apt_pkg
- sudo 更新替代品 --remove-all python && sudo 更新替代品 --remove-all python3
--> 输出错误改为
(...)
sh: 1: /usr/lib/cnf-update-db: not found
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
而且:我无法再访问我的终端。我发现唯一不方便的方法是右键单击任意位置,然后选择“打开终端”。为此,我尝试过
- 更改语言设置,即使它们从未被损坏。
- 从“应用程序”启动终端,这将导致出现一条通知,提示
failed to execute child process gnome-terminal: no such file or directory
- 通过“右键单击”启动它并输入
$ gnome-terminal
结果bash: /usr/bin/gnome-terminal: /usr/bin/python3: bad interpreter: No such file or directory
希望解决一个问题就能解决另一个问题。
答案1
使用 update-alternatives 将默认的 Python 版本恢复为原来的版本。我也在运行 Ubuntu 18.04,我的 Python 版本是 2.7.15
$ python --version
Python 2.7.15+
然后,我建议研究使用venv
(python3 中的 venv 和 python2 中的 virtualenv)设置虚拟 python 环境来测试或运行需要 python 3 的程序。
首先,通过运行确保您已安装 pip sudo apt install python3-pip
,或者通过运行确保它是最新的python3 -m pip install --user --upgrade pip
。
然后运行安装 venvpython3 -m pip install --user virtualenv
我不想将您链接到外部网页,但 python.org 网站上有明确的说明。您可以在以下网址找到该网站的链接这里
答案2
好吧,我最终重新安装了 Ubuntu:无论我找到多少解决方案,导致的问题都太多样化了,即使所有问题都类似于以某种方式弄乱了 Python 默认版本的事实。
我猜 Python 真的是在使用 Ubuntu 时,你应该格外小心。这是惨痛的教训。
答案3
嗯,试试“windows 方式”
sudo apt install --reinstall python3-commandnotfound command-not-found