스택큐힙리스트

나쁜 마법 숫자 오류란 무엇인가요? 본문

카테고리 없음

나쁜 마법 숫자 오류란 무엇인가요?

스택큐힙리스트 2023. 4. 20. 03:06
반응형

파이썬에서 Bad magic number ImportError는 무엇이며 어떻게 해결해야 하나요?

온라인에서 찾을 수 있는 유일한 것은 .py -> .pyc 파일을 컴파일하고 그것을 잘못된 버전의 파이썬으로 사용하려고 시도하면 이것이 발생하는 것으로 추정됩니다. 그러나 내 경우에는 파일이 때때로 잘 가져오는 것 같지만 다른 경우에는 가져오지 않으며 그 이유를 잘 모르겠습니다.

트레이스백에서 파이썬이 제공하는 정보는 특별히 도움이 되지 않습니다(따라서 여기서 질문을하고 있습니다...), 하지만 도움이 될 수 있으므로 다음과 같은 정보입니다:

Traceback (most recent call last):

File run.py, line 7, in

from Normalization import Normalizer

답변 1

매직 넘버는 UNIX 유형의 시스템에서 파일의 처음 몇 바이트에 파일 유형을 나타내는 마커가 있는 것에서 비롯됩니다.

파이썬은 해당 파일을 생성할 때 유사한 마커를 그 사이에 추가합니다.

그런 다음 파이썬 인터프리터는 이 숫자를 로드할 때 올바른 것인지 확인합니다.

이 마법 숫자를 손상시키는 모든 것은 당신의 문제를 일으킬 것입니다. 이는 pyc 파일을 편집하거나 인터프리터보다 (보통 최신) 더 늦은 파이썬 버전의 pyc 을 실행하려는 것을 포함합니다.

그들이 당신의 세상일경우 (또는 그들을 위한 py 파일이 있을경우), 그냥 삭제하고 해석기가 지우고 다시 컴파일하도록 하십시오. UNIX 타입 시스템에서는 다음과 같은 간단한 것일 수 있습니다.

rm *.pyc

또는:

find . -name '*.pyc' -delete

만약 그것들이 당신의 것이 아니고 원래의 py 파일이 제공되지 않는다면, 다시 컴파일하기 위해 py 파일을 가져오거나 그 특별한 magic 값의 pyc 파일을 실행할 수 있는 인터프리터를 사용해야 합니다.

간헐적인 성격을 일으킬 수 있는 것 중 하나는 문제를 일으키는 #@&^&#&$$&가 특정 조건에서만 가져올 수 있다는 것입니다. 때때로 수입 될 가능성은 매우 미망하다. 수입이 실패할 때 실제 full stack trace를 확인해야 합니다.

그리고 제 모든 파일의 첫 단어는 62131, 2.6.1(r261:67517)과 같습니다. 모든 매직 넘버의 목록은 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

답변 2

[SEO-conscious Korean Essay on Bad Magic Number Error]

배드 매직 넘버 에러란 무엇인가? 이 에러는 프로그래밍에서 종종 발생하는데, 프로그램에 버그가 있을 때 발생한다. 이 에러는 보통 메모리 누수, 정수 오버플로우, 소수점 계산 오류 등 여러가지 이유로 발생한다.

배드 매직 넘버 에러는 이해하기 쉽지 않지만, 이 에러가 발생하는 원인은 간단하다. 예를 들어, 프로그래머가 배열을 선언할 때, 배열의 인덱스를 지정해 줄 때, 일반적으로 0부터 시작하는 것이 일반적이다. 그러나 어떤 프로그래머들은 이를 잘못 지정할 수 있고, 1부터 시작하는 경우도 있다. 이럴 때, 프로그램이 불안정해지고 배드 매직 넘버 에러가 발생할 가능성이 크다.

또 다른 예로, 프로그래머가 반복문을 작성할 때, 예상치 못한 반복 횟수나 배열의 크기를 설정할 때도 있다. 이 경우, 프로그램은 예외를 발생시키거나 충돌을 일으키며, 배드 매직 넘버 에러가 발생한다.

이러한 배드 매직 넘버 에러는 프로그래밍의 과정에서 발생하는 어려움 중 하나이다. 이 에러를 방지하려면, 프로그래머는 변수 및 배열의 크기와 형식 등을 정확하게 지정하고, 예외 상황을 처리하는 코드를 작성하는 것이 중요하다.

마지막으로, 배드 매직 넘버 에러를 해결하려면, 프로그램의 로그를 기록하고, 코드 검사 도구를 사용하여 코드의 결함을 최소화하는 것이 좋다. 이렇게 하면 프로그램이 안정적으로 작동하고, 사용자가 마음 편하게 사용할 수 있는 프로그램을 만들 수 있다.

결론적으로, 배드 매직 넘버 에러는 프로그래밍에서 불가피하게 발생하는 것이지만, 정확하게 코드를 작성하고 로그를 기록하여 사전에 방지하는 것이 중요하다. 이러한 배드 매직 넘버 에러가 발생하지 않도록 주의하면, 프로그램을 원활하게 실행할 수 있고, 사용자에게 이상적인 경험을 제공할 수 있다.

반응형
Comments