Fedora 26에서 "ImportError: 'six'의 잘못된 매직 넘버"가 표시될 때 손상된 dnf를 해결하는 방법

Fedora 26에서 "ImportError: 'six'의 잘못된 매직 넘버"가 표시될 때 손상된 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'

dnf distro-sync를 통해 Fedora 자체 업데이트 외에 설치한 것은 전혀 기억나지 않습니다. Python 버전 변경에 문제가 있는 걸까요?

저는 Fedora 26 Workstation x86_64를 사용합니다.

답변1

파이썬 six라이브러리가 손상된 것 같습니다. 당신은 무엇을 얻나요 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*'

예를 들어 file 이 있는 경우 /usr/bin/six.pycPython은 (모듈 로드 순서로 인해) 해당 파일을 먼저 사용하려고 시도합니다. 이 파일을 재배치/제거하는 것이 나에게 도움이 되었습니다.

또한보십시오:Ask.fedoraproject.org에 비슷한 질문이 있습니다.

관련 정보