私の 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 は最初にそれを使用しようとします (モジュールのロード順序による)。このファイルを再配置/削除すると、うまくいきました。