我的 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 將嘗試首先使用該文件(由於模組載入順序)。重新定位/刪除這個檔案對我來說很有效。