我的 dnf 停止工作并显示此错误:
Traceback (most recent call last):
File "/usr/bin/dnf", line 57, in <module>
from dnf.cli import main
File "/usr/lib/python3.6/site-packages/dnf/__init__.py", line 31, in <module>
import dnf.base
File "/usr/lib/python3.6/site-packages/dnf/base.py", line 37, in <module>
import dnf.conf
File "/usr/lib/python3.6/site-packages/dnf/conf/__init__.py", line 40, in <module>
from dnf.conf.config import PRIO_DEFAULT, PRIO_MAINCONFIG, PRIO_AUTOMATICCONFIG
File "/usr/lib/python3.6/site-packages/dnf/conf/config.py", line 26, in <module>
from iniparse.compat import ParsingError, RawConfigParser as ConfigParser
File "/usr/lib/python3.6/site-packages/iniparse/__init__.py", line 6, in <module>
from .ini import INIConfig, change_comment_syntax
File "/usr/lib/python3.6/site-packages/iniparse/ini.py", line 47, in <module>
import six
ImportError: bad magic number in 'six': b'\x03\xf3\r\n'
除了 Fedora 通过 dnf distro-sync 进行的更新外,我真的不记得我安装了什么。这可能是 python 版本更改的问题吗?
我使用 Fedora 26 Workstation x86_64
答案1
听起来好像是 Pythonsix
库损坏了。你用 得到了什么rpm -V python3-six
?如果没有输出,则问题出在其他地方。但是,如果你得到类似这样的信息:
S.5....T. /usr/lib/python3.6/site-packages/__pycache__/six.cpython-36.pyc
尝试删除有问题的pyc
文件并重试sudo dnf list
(sudo rm /usr/lib/python3.6/site-packages/__pycache__/six.cpython-36.pyc
)
请注意,它不是一般来说安全地删除随机文件,但这些pyc
文件是为了优化而预编译的字节码,并且将被重新创建。
rpm -Vf
还要注意的是,在休闲之后,仍然显示文件已更改,因为...它已更改。但它可能会修复这个特定的“糟糕的魔数”问题。
如果那不起作用,更糟糕的事情正在发生。
答案2
尝试查找任何可能有冲突的文件:
sudo find / -name 'six.py*'
例如,如果您有一个文件/usr/bin/six.pyc
,python 将首先尝试使用该文件(由于模块加载顺序)。 重新定位/删除此文件对我来说很有效。