2011-08-21 29 views
2

我每次我使用Eclipse中的PyDev運行任何Python文件時收到此錯誤:導入錯誤:錯誤的幻數,因爲OSX獅子

Traceback (most recent call last): 
    File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/site.py", line 73, in <module> 
__boot() 
    File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/site.py", line 2, in __boot 
    import sys, imp, os, os.path 
ImportError: Bad magic number in /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/os.pyc 

我使用python 2.6。當我從終端(2.7或2.6)運行python時,不會發生這個問題。自從上次工作以來,我改變的唯一一件實質性的事情就是Snow Leopard對OSX Lion的更新。

這種類似的討論似乎暗示某種去除.pyc文件的文件,因爲某種東西原來是用pyc文件之間的錯配的(我不能完全肯定一個神奇的數字是什麼.. )。但我對從Frameworks目錄中刪除os.pyc的想法有點謹慎。當唯一的其他文件是一個os.pyo文件(不知道它有什麼不同),而不是一個os.py.

我已經安裝了所有OSX獅子的更新,更新的Eclipse和PyDev的更新。

即使代碼出現此問題,如:

if __name__ == '__main__': 
    pass 

任何幫助解決這將不勝感激!

+0

當我做雪豹 - >山獅更新時,完全遇到了同樣的問題。你能解決這個問題嗎? – kiminoa

回答

1

是的,您需要重新生成* .pyc文件中的所有* .pyc * .pyo文件。

你如何做到這一點取決於他們如何在第一時間產生的。 python的一些打包(以及它的附加組件),比如在某些Linux發行版中,爲了自己的好處而有點過於聰明,並將原始的* .py文件保存在其他地方,並且有自己的構建系統來生成和放置* .pyc和/或* .pyo文件。在這樣的情況下,您必須使用構建系統從原始* .py文件重新生成它們。

僅供參考,這裏有couplelinks上* .pyo文件。它們是編譯好的python模塊的優化版本。

0

在OS X Lion上,您應該有一個os.py文件。這可能是你錯誤的根源。 os.pyc文件是從不同版本的python生成的,而不是您現在正在運行的版本。通常,我想象python解釋器只會從os.py重新生成文件。但無論出於何種原因,您的系統都沒有該文件。

我懷疑這是在更大的一組問題,一個小的數據點,並會在一般情況下,建議您的操作系統重新安裝。

爲了便於比較,我運行10.7.1,我有以下幾點:

[2:23pm][[email protected] workout] ls /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/os.* 
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/os.py 
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/os.pyc 
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/os.pyo 

順便說一句,在* .pyo文件是Python字節碼的優化版本。

2

將Python升級到2.7.1,運行位於Python目錄中的「Update Shell Profile」命令文件,並根據新安裝爲Netbeans更改Python設置。