每次我在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时,不会出现此问题。自从上次一切正常以来,我唯一做了实质性的改变,就是从雪豹升级到OSX Lion。
类似的讨论似乎建议删除。pyc文件,因为最初使用的。pyc文件之间存在某种不匹配(我不完全确定一个神奇的数字是什么…)。但我对删除os的想法有点谨慎。从Frameworks目录中找到pyc。当唯一的其他文件是操作系统时。Pyo文件(不确定有什么区别),而不是os.py.
我已经安装了所有的OSX Lion更新,Eclipse更新和PyDev更新。
这样的代码也会出现这个问题:
if __name__ == '__main__':
pass
任何帮助解决这个问题将不胜感激!
升级Python到2.7.1,运行位于Python目录下的"Update Shell Profile"命令文件并根据新安装更改Netbeans中的Python设置对我有效。
是的,你需要重新生成所有的*。Pyc 和 *。*.py文件中的Pyo文件。
如何做到这一点取决于它们最初是如何生成的。python(及其附加组件)的一些打包,例如在某些Linux发行版中,为了自己的利益而变得有点过于聪明,并将原始的*.py文件保存在其他地方,并拥有自己的构建系统来生成和放置*.py文件。Pyc和/或*。巴西的文件。在这种情况下,您必须使用构建系统从原始的*.py文件重新生成它们。
供参考,这里有几个关于*的链接。巴西的文件。它们是已编译python模块的优化版本。
在OS X Lion上,您应该有一个OS .py文件。这可能是您的错误的根本原因。操作系统。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字节码的优化版本。