2012-09-02 101 views
6

在我的程序中嘗試導入某個模塊(編譯後的.pyc)時出現了一些問題。我知道它編譯爲Python 2.6.6(r266:84297),我已經安裝了相同的版本,但在嘗試導入時出現錯誤「不良幻數」:(嘗試導入.pyc模塊時出現錯誤的幻數

有沒有人知道我做錯了什麼? 或許有可能改變幻數.pyc文件模塊?

+1

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

+0

我沒有.py文件重新編譯它。我只有.pyc但不知道爲什麼python不能導入它。版本相同 – user1641423

+0

我發現這個文件是.pyo(第一次發現它沒有擴展名)。是否有任何不同的.pyo和.pyc文件?或者他們是一樣的? – user1641423

回答

4

隨着answer linked by Matthew解釋說,你的問題是幾乎可以肯定,由於被用於編譯和加載模塊的不同版本的Python,你可以決定一個神奇的數字像這樣:

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

你可以通過printin來確定你的Python版本g sys.version(它也在交互式啓動時迴應)。如果您使用Python 2.6.6,幻數應該是62161.如果不同,您需要切換到另一個Python才能導入模塊。

完全相同適用於.pyo文件。

+0

有趣的事情。我需要導入的.pyc文件具有魔力:C0 00 00 00.它使用pyInstaller打包的.Exe運行。 Python版本2.6.6(DLL)。也許PyInstaller改變.pyc的魔術和可能的結構? – user1641423

+0

對不起。 magic = 63 00 00 00 – user1641423

+0

是那些十六進制字節,如果是的話,你是如何獲得它們的?這看起來不像一個有效的Python幻數,這可能是Python拒絕導入文件的原因。 – user4815162342

相關問題