Magiczna liczba pochodzi z systemów typu UNIX, w których kilka pierwszych bajtów pliku zawierało znacznik wskazujący typ pliku.
Python umieszcza podobny znacznik w swoich pycplikach podczas ich tworzenia.
Następnie interpreter Pythona upewnia się, że ten numer jest poprawny podczas ładowania.
Wszystko, co uszkodzi tę magiczną liczbę, spowoduje twój problem. Obejmuje to edycję pycpliku lub próbę uruchomieniapyc innej wersji Pythona (zwykle późniejszej) niż interpreter.
Jeśli są to twoje pyc pliki, po prostu je usuń i pozwól tłumaczowi ponownie skompilować pypliki. W systemach typu UNIX może to być coś tak prostego jak:
rm *.pyc
lub:
find . -name '*.pyc' -delete
Jeśli nie są twoje, będziesz musiał albo pobrać pypliki do ponownej kompilacji, albo interpreter, który będzie mógł uruchamiać pycpliki o tej konkretnej magicznej wartości.
Jedna rzecz, która może powodować przerywaną naturę. Przyczynę pycproblemu można zaimportować tylko pod pewnymi warunkami. Jest bardzo mało prawdopodobne, że czasami importuje. Powinieneś sprawdzić rzeczywisty ślad pełnego stosu, gdy import się nie powiedzie?
Tak na marginesie, to pierwsze słowo z wszystkich moich 2.5.1(r251:54863) pycplików jest 62131, 2.6.1(r261:67517)jest 62161. Lista wszystkich magicznych liczb znajduje się Python/import.ctutaj, odtworzona tutaj dla kompletności (aktualna w chwili opublikowania odpowiedzi, mogła ulec zmianie od tego czasu):
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