当我收到“ImportError:‘six’ 中的魔法数字错误”时,如何解决 Fedora 26 中损坏的 dnf

当我收到“ImportError:‘six’ 中的魔法数字错误”时,如何解决 Fedora 26 中损坏的 dnf

我的 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 listsudo 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 将首先尝试使用该文件(由于模块加载顺序)。 重新定位/删除此文件对我来说很有效。

也可以看看:ask.fedoraproject.org 上的类似问题

相关内容