Số ma thuật đến từ các hệ thống kiểu UNIX trong đó một vài byte đầu tiên của tệp chứa một điểm đánh dấu cho biết loại tệp.
Python đặt một điểm đánh dấu tương tự vào các pyc
tệp của nó khi nó tạo chúng.
Sau đó, trình thông dịch python đảm bảo số này là chính xác khi tải nó.
Bất cứ điều gì làm hỏng số ma thuật này sẽ gây ra vấn đề của bạn. Điều này bao gồm chỉnh sửa pyc
tệp hoặc cố gắng chạy một pyc
phiên bản khác của python (thường là sau này) so với trình thông dịch của bạn.
Nếu chúng là tệp của bạn pyc
, chỉ cần xóa chúng và để trình thông dịch biên dịch lại py
các tệp. Trên các hệ thống loại UNIX, đó có thể là một cái gì đó đơn giản như:
rm *.pyc
hoặc là:
find . -name '*.pyc' -delete
Nếu chúng không phải của bạn, bạn sẽ phải lấy các py
tệp để biên dịch lại hoặc trình thông dịch có thể chạy các pyc
tệp có giá trị ma thuật cụ thể đó.
Một điều có thể gây ra bản chất không liên tục. Điều pyc
đó gây ra vấn đề chỉ có thể được nhập khẩu trong một số điều kiện nhất định. Đôi khi rất khó có thể nhập khẩu. Bạn nên kiểm tra theo dõi ngăn xếp đầy đủ thực tế khi nhập thất bại?
Là một sang một bên, từ đầu tiên của tất cả của tôi 2.5.1(r251:54863)
pyc
file là 62131
, 2.6.1(r261:67517)
là 62161
. Danh sách tất cả các số ma thuật có thể được tìm thấy Python/import.c
, được sao chép ở đây cho đầy đủ (hiện tại vào thời điểm câu trả lời được đăng, nó có thể đã thay đổi kể từ đó):
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