O número mágico vem de sistemas do tipo UNIX, nos quais os primeiros bytes de um arquivo mantinham um marcador indicando o tipo de arquivo.
Python coloca um marcador semelhante em seus pyc
arquivos quando os cria.
Em seguida, o intérprete python garante que esse número esteja correto ao carregá-lo.
Qualquer coisa que danifique esse número mágico causará seu problema. Isso inclui editar o pyc
arquivo ou tentar executar um pyc
de uma versão diferente do python (geralmente mais tarde) que o seu intérprete.
Se forem seus pyc
arquivos, exclua-os e deixe o intérprete recompilar os py
arquivos. Em sistemas do tipo UNIX, isso pode ser algo tão simples quanto:
rm *.pyc
ou:
find . -name '*.pyc' -delete
Se eles não forem seus, você precisará obter os py
arquivos para recompilação ou um intérprete que possa executar os pyc
arquivos com esse valor mágico específico.
Uma coisa que pode estar causando a natureza intermitente. O problema pyc
que está causando o problema pode ser importado apenas sob certas condições. É altamente improvável que às vezes seja importado. Você deve verificar o rastreamento de pilha completa real quando a importação falhar?
Como um aparte, a primeira palavra de todos os meus 2.5.1(r251:54863)
pyc
arquivos é 62131
, 2.6.1(r261:67517)
é 62161
. A lista de todos os números mágicos pode ser encontrada Python/import.c
aqui, reproduzida aqui para ser completa (atual, no momento em que a resposta foi postada, ela pode ter sido alterada desde então):
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