每次在Eclipse中使用PyDev运行任何python文件时,我都会收到此错误:
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 Lion更新,Eclipse更新和PyDev更新。
即使使用以下代码也会出现此问题:
if __name__ == '__main__':
pass
任何帮助解决这个问题都将不胜感激!
答案 0 :(得分:2)
将Python升级到2.7.1,运行位于Python目录中的“Update Shell Profile”命令文件,并根据新安装更改Netbeans中的Python设置。
答案 1 :(得分:1)
是的,您需要从* .py文件中重新生成所有* .pyc 和 * .pyo文件。
如何执行此操作取决于它们首先生成的方式。 python的一些包装(以及它的附加组件),例如在某些Linux发行版中,对于它自己的好处有点过于聪明,并将原始的* .py文件保存在其他地方并拥有自己的构建系统来生成和放置* .pyc和/或* .pyo文件。在这种情况下,您必须使用 构建系统从原始* .py文件中重新生成它们。
答案 2 :(得分:0)
在OS X Lion上,您应该有一个os.py文件。这可能是您的错误的根本原因。 os.pyc文件是从不同版本的python生成的,而不是现在运行的。通常,我想python解释器只会从os.py
重新生成文件。但无论出于何种原因,您的系统都没有该文件。
我怀疑这是一系列问题中的一个小数据点,并且通常建议重新安装操作系统。
为了比较,我正在运行10.7.1,我有以下内容:
[2:23pm][wlynch@orange 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字节码的优化版本。