Как исправить ошибку dnf в Fedora 26, когда я получаю сообщение «ImportError: неверное магическое число в 'six'»

Как исправить ошибку dnf в Fedora 26, когда я получаю сообщение «ImportError: неверное магическое число в 'six'»

Мой 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

Связанный контент