2012-09-02 2 views
6

내 프로그램에서 일부 모듈 (.pyc 컴파일 됨)을 가져 오는 동안 몇 가지 문제가 있습니다. 나는 Python 2.6.6 (r266 : 84297)에서 컴파일 된 것을 알고 있지만 같은 버전을 설치했지만 가져 오기를 시도하는 중에 "bad magic number"라는 오류가 발생했다. (.pyc 모듈 가져 오기를 시도하는 중에 잘못된 매직 번호가 발생했습니다.

아무도 내가 잘못했는지 안다. ? 또는 .pyc 모듈에서 매직 넘버를 바꿀 수 있습니까?

+1

체크 아웃 http://stackoverflow.com/questions/514371/whats-the-bad-magic-number-error?rq=1 –

+0

.py 파일이 없으므로 파일을 다시 컴파일하십시오. 나는 .pyc 만 가지고 있지만 파이썬이 왜 그것을 가져올 수 없는지는 모른다. 버전은 동일합니다 – user1641423

+0

이 파일은 .pyo (확장자가없는 파일)입니다. .pyo 및 .pyc 파일의 차이점은 무엇입니까? 또는 그들은 동일합니까? – user1641423

답변

4

answer linked by Matthew에 설명되어 있듯이 모듈을 컴파일하고로드하는 데 사용되는 Python의 버전이 다를 수 있습니다. 매직 넘버를 결정할 수 있습니다 다음과 같이하십시오 :

with open('pyuca.pyc', 'rb') as f: 
    print struct.unpack('<H', f.read(2)) 

파이썬 버전은 printin g sys.version (대화식 시작시에도 에코됩니다). 파이썬 2.6.6을 사용한다면, 매직 넘버는 62161이어야합니다. 다른 경우, 모듈을 임포트하려면 다른 파이썬으로 전환해야합니다.

정확하게 동일한 파일이 .pyo에 적용됩니다.

+0

흥미로운 것. 가져올 .pyc 파일에는 마법이 있습니다 : C0 00 00 00. pyInstaller로 압축 된 .Exe에서 실행됩니다. Python 버전 2.6.6 (DLL). 어쩌면 PyInstaller가 마법과 가능한 .pyc 구조를 바꿀 수 있습니까? – user1641423

+0

죄송합니다. magic = 63 00 00 00 – user1641423

+0

그 16 진수 바이트입니까? 그렇다면 어떻게 얻었습니까? 이것은 파이썬이 파이썬 매직 넘버처럼 보이지 않기 때문에 파이썬이 파일을 임포트하는 것을 거부 할 수 있습니다. – user4815162342

관련 문제