Fedora 26 で「ImportError: bad magic number in 'six'」というエラーが発生した場合の壊れた dnf を解決する方法

Fedora 26 で「ImportError: bad magic number in 'six'」というエラーが発生した場合の壊れた 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'

dnf distro-sync による Fedora 自身のアップデート以外にインストールしたものは何も覚えていません。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 は最初にそれを使用しようとします (モジュールのロード順序による)。このファイルを再配置/削除すると、うまくいきました。

参照:ask.fedoraproject.org での同様の質問

関連情報