2012-09-02 21 views
6

Programımda bazı modülleri (derlenmiş .pyc) almaya çalışırken bazı sorunlarım var. Python 2.6.6'da (r266: 84297) derlendiğimi biliyorum, ancak aynı sürümü yükledim, ancak onu almayı denerken bir hata "bozuk büyü numarası" vardı :(.pyc modülünü içe aktarmaya çalışırken hatalı sihir numarası

Yanlış yaptığımı bilen var mı? ? Ya da belki .pyc modülünde sihirli sayısını değiştirmek için?

+1

http://stackoverflow.com/questions/514371/whats-the-bad-magic-number-error?rq=1 –

+0

adresine bakın. Yeniden derlemek için .py dosyasına sahip değilim. Sadece .pyc'm var ama python'un neden ithal edemediğini bilmiyorum. Sürümler aynı – user1641423

+0

Bu dosyanın .pyo olduğunu (ilk defa uzantı olmadan bulduğumu) buldum. Herhangi bir değişik .pyo ve .pyc dosyası var mı? Yoksa aynı mı? – user1641423

cevap

4

answer linked by Matthew Sorununuz nedeniyle derleme ve modül yüklemek için kullanılan Python farklı sürümleri için neredeyse kesin olduğunu şöyle açıklıyor mümkündür. sihirli bir sayı belirleyebilirsiniz şunun gibi:

with open('pyuca.pyc', 'rb') as f: 
    print struct.unpack('<H', f.read(2)) 

Python sürümünüzü printin ile belirleyebilirsiniz g sys.version (etkileşimli başlangıçta da yankılandı). Python 2.6.6 kullanıyorsanız, sihirli sayı 62161 olmalıdır. Farklıysa, modülü alabilmek için farklı bir Python'a geçmeniz gerekecektir.

Tam olarak .pyo dosyaları için geçerlidir.

+0

İlginç bir şey. İçe aktarması gereken .pyc dosyasının sihri var: C0 00 00 00. Çalışıyor. PyInstaller ile paketlenmiş. Python sürümü 2.6.6 (DLL). Belki PyInstaller büyüyü ve .pyc'nin olası yapısını değiştirir mi? – user1641423

+0

üzgünüm. magic = 63 00 00 00 – user1641423

+0

Bu onaltılık baytlar ve eğer öyleyse, bunları nasıl edindiniz? Bu, Python'un dosyayı almayı reddetmesinin nedeni olabilecek geçerli bir Python sihir numarası gibi görünmüyor. – user4815162342

İlgili konular