我做了一个sudo apt update && sudo apt full-upgrade -y
并收到以下错误:
File "/usr/bin/pycompile", line 35, in <module>
from debpython.version import SUPPORTED, debsorted, vrepr, \
File "/usr/share/python/debpython/version.py", line 24, in <module>
from ConfigParser import SafeConfigParser
ModuleNotFoundError: No module named 'ConfigParser'
读完后,我认为这与某个地方的手动摆弄有关/usr/bin
(现在我读过从来没有这样做过,但我不记得过去是否做过……),或者与默认 python 版本相关发行版需要。
这是我在系统上的 python 方面可以看到的内容:
/usr/bin/python
是一个链接到python2
, python2
是一个链接到python2.7
.
不确定,但这是否指向正确的版本?它甚至与上面的错误有关吗?
sudo apt -f --reinstall install python-configparser
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not upgraded.
2 not fully installed or removed.
Need to get 62.6 kB of archives.
After this operation, 0 B of additional disk space will be used.
Get:1 http://kali.download/kali kali-rolling/main amd64 python-configparser all 3.5.0b2-3 [62.6 kB]
Fetched 62.6 kB in 1s (57.7 kB/s)
(Reading database ... 402234 files and directories currently installed.)
Preparing to unpack .../python-configparser_3.5.0b2-3_all.deb ...
Unpacking python-configparser (3.5.0b2-3) over (3.5.0b2-3) ...
Setting up mercurial-common (5.4.1-1) ...
Traceback (most recent call last):
File "/usr/bin/pycompile", line 35, in <module>
from debpython.version import SUPPORTED, debsorted, vrepr, \
File "/usr/share/python/debpython/version.py", line 24, in <module>
from ConfigParser import SafeConfigParser
ModuleNotFoundError: No module named 'ConfigParser'
dpkg: error processing package mercurial-common (--configure):
installed mercurial-common package post-installation script subprocess returned error exit status 1
Setting up python-configparser (3.5.0b2-3) ...
Traceback (most recent call last):
File "/usr/bin/pycompile", line 35, in <module>
from debpython.version import SUPPORTED, debsorted, vrepr, \
File "/usr/share/python/debpython/version.py", line 24, in <module>
from ConfigParser import SafeConfigParser
ModuleNotFoundError: No module named 'ConfigParser'
dpkg: error processing package python-configparser (--configure):
installed python-configparser package post-installation script subprocess returned error exit status 1
dpkg: dependency problems prevent configuration of mercurial:
mercurial depends on mercurial-common (= 5.4.1-1); however:
Package mercurial-common is not configured yet.
dpkg: error processing package mercurial (--configure):
dependency problems - leaving unconfigured
Errors were encountered while processing:
mercurial-common
python-configparser
mercurial
8 月 4 日更新:似乎已解决。只是一个更新,在各种其他论坛等之后......并做了很多实验:-)。没有任何效果。
因此,在所有 python 和 python 最小包上尝试了 apt-cache rdepends 命令,并注意到 python2.7 经常在输出中显示重复项。然后尝试了 dpkg -V 和 python2 minimise 基本上给了我一个奇怪的输出,其中有一些?在左边并提到了 pycompile(抱歉当时没有截图),但它是唯一显示任何输出的,当时我认为 python2.7 可能已损坏。因此,按如下方式进行:
将我的 /usr/bin/ python 链接到 python3,如下所示: sudo ln -s /usr/bin/python3 /usr/bin/python 然后验证版本以确保它指向某个地方,如下所示: python - 版本。然后,像这样进行了 aotoremove : apt autoremove ,
最后我像这样清除了 2.7 最小版本: sudo apt purge -y python2.7-minimal 。终于我可以毫无问题地使用 apt 了。并且,做了一个 : apt clean 以及 sudo dpkg --force-all --configure -a ,到目前为止一切似乎都很好。因此,我立即关闭电源并拍摄了虚拟机快照,之后就可以正常启动了。稍后看看是否需要重新安装python2.7...
附言! python 将来会永远产生这些向后兼容性问题吗?在浏览这个问题的网络时,我注意到很多似乎与向后兼容性问题相关的问题(如果是这样,我想我必须放弃学习 python 的计划,因为我真的会尝试学习它,特别是代替 shell 脚本,但是我不喜欢我看到的方法,也许 shell 脚本和 JS 或 GO 之类的组合从长远来看会更好。)
感谢大家的提示和帮助。如果我遇到 2.7 问题,我会更新。