Мой 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
Похоже, six
библиотека python повреждена. Что вы получаете с 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