Nomor ajaib berasal dari sistem tipe UNIX di mana beberapa byte pertama dari sebuah file memegang penanda yang menunjukkan jenis file.
Python menempatkan penanda serupa ke dalam pycfile -nya ketika itu menciptakan mereka.
Kemudian interpreter python memastikan angka ini benar ketika memuatnya.
Apa pun yang merusak angka ajaib ini akan menyebabkan masalah Anda. Ini termasuk mengedit pycfile atau mencoba menjalankan pycdari versi python yang berbeda (biasanya lebih baru) dari penerjemah Anda.
Jika itu adalah file Anda pyc , hapus saja dan biarkan penerjemah mengkompilasi ulang pyfile. Pada sistem tipe UNIX, itu bisa menjadi sesuatu yang sederhana seperti:
rm *.pyc
atau:
find . -name '*.pyc' -delete
Jika bukan milik Anda, Anda harus mendapatkan pyfile untuk kompilasi ulang, atau penerjemah yang dapat menjalankan pycfile dengan nilai ajaib tertentu.
Satu hal yang mungkin menyebabkan sifatnya terputus-putus. Yang pycmenyebabkan masalah hanya dapat diimpor dalam kondisi tertentu. Sangat tidak mungkin kadang-kadang mengimpor. Anda harus memeriksa jejak tumpukan penuh yang sebenarnya ketika impor gagal?
Sebagai tambahan, kata pertama dari semua 2.5.1(r251:54863) pycfile saya adalah 62131, 2.6.1(r261:67517)adalah 62161. Daftar semua angka ajaib dapat ditemukan di Python/import.c, direproduksi di sini untuk kelengkapan (saat ini pada saat jawaban diposting, mungkin telah berubah sejak saat itu):
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