매직 번호는 파일의 처음 몇 바이트가 파일 유형을 나타내는 마커를 보유한 UNIX 유형 시스템에서 나옵니다.
파이썬은 pyc
파일을 만들 때 비슷한 마커를 파일에 넣 습니다.
그런 다음 파이썬 인터프리터는이 숫자를로드 할 때 올바른지 확인합니다.
이 매직 넘버를 손상시키는 것은 문제를 일으킬 것입니다. 여기에는 pyc
파일을 편집 하거나 pyc
인터프리터와 다른 버전의 파이썬 (보통 나중에)에서 실행하려고하는 것이 포함됩니다 .
그것들이 당신의 pyc
파일 이라면, 그것들을 삭제하고 인터프리터가 py
파일을 다시 컴파일하게 하십시오. UNIX 유형 시스템에서는 다음과 같이 간단 할 수 있습니다.
rm *.pyc
또는:
find . -name '*.pyc' -delete
그들이 당신의 것이 아닌 경우, py
재 컴파일을 위해 파일을 가져 오거나 pyc
해당 특정 마법 값으로 파일을 실행할 수있는 인터프리터를 가져와야합니다.
간헐적 인 성격을 유발할 수있는 한 가지. pyc
문제를 일으키는 것을는 특정 조건 하에서 만 수입 할 수있다. 때때로 가져올 가능성은 거의 없습니다. 가져 오기가 실패 할 때 실제 전체 스택 추적을 확인해야합니까?
여담으로, 내 모든의 첫 번째 단어 2.5.1(r251:54863)
pyc
파일은 62131
, 2.6.1(r261:67517)
이다 62161
. 모든 매직 넘버의 목록은에서 찾을 수 있으며 Python/import.c
완전성을 위해 여기에 재현되어 있습니다 (답변이 게시 된 시점부터 현재까지 변경되었을 수 있음).
1.5: 20121
1.5.1: 20121
1.5.2: 20121
1.6: 50428
2.0: 50823
2.0.1: 50823
2.1: 60202
2.1.1: 60202
2.1.2: 60202
2.2: 60717
2.3a0: 62011
2.3a0: 62021
2.3a0: 62011
2.4a0: 62041
2.4a3: 62051
2.4b1: 62061
2.5a0: 62071
2.5a0: 62081
2.5a0: 62091
2.5a0: 62092
2.5b3: 62101
2.5b3: 62111
2.5c1: 62121
2.5c2: 62131
2.6a0: 62151
2.6a1: 62161
2.7a0: 62171