當我收到「ImportError: bad magic number in ‘six’」時,如何解決 Fedora 26 中損壞的 dnf

當我收到「ImportError: bad magic number in ‘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 工作站 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 上有類似問題

相關內容