2

每次使用 PyDev 在 Eclipse 中运行任何 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

任何解决此问题的帮助将不胜感激!

4

3 回答 3

2

将 Python 升级到 2.7.1,运行位于 Python 目录中的“更新 Shell 配置文件”命令文件,并根据新安装更改 Netbeans 中的 Python 设置对我有用。

于 2011-09-09T10:50:48.443 回答
1

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

你如何做到这一点取决于它们最初是如何生成的。一些 python 的打包(以及它的附加组件),比如在一些 Linux 发行版中,对于它自己的利益来说有点太聪明了,并将原始的 *.py 文件保存在其他地方,并有自己的构建系统来生成和放置 * .pyc 和/或 *.pyo 文件。在这种情况下,您必须使用构建系统从原始 *.py 文件重新生成它们。

仅供参考,这里有几个 关于 *.pyo 文件的链接。它们是已编译 python 模块的优化版本。

于 2011-08-21T19:18:12.667 回答
0

On OS X Lion, you should have a os.py file. This is likely the root cause of your error. The os.pyc file was generated from a different version of python than you are running now. Normally, I imagine the python interpreter would just regenerate the file from os.py. But for whatever reason, your system does not have that file.

I suspect that this is a small data point in a larger set of issues and would, in general, recommend a reinstallation of your operating system.

For comparison, I'm running 10.7.1, and I have the following:

[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

As an aside, the *.pyo file is an optimized version of the python bytecode.

于 2011-08-21T19:24:52.453 回答