您遇到了 32 位与 64 位问题。看来您正在使用从 MacPorts 安装的 Python 2.6,并且显然它不是通用(32 位/64 位)版本。您的应用程序以 64 位运行,而 Python 仅以 32 位运行,或者反之亦然。您可以使用以下方式检查file
:
cd /opt/local/Library/Frameworks/Python.framework/Versions/2.6/
cd lib/python2.6/lib-dynload/
file itertools.so
itertools.so: Mach-O universal binary with 2 architectures
itertools.so (for architecture x86_64): Mach-O 64-bit bundle x86_64
itertools.so (for architecture i386): Mach-O bundle i386
最简单的修复可能是重新安装 MacPorts Python 和您安装的其他软件包,例如 PyObjC:
sudo port selfupdate
sudo port -u install python26 +universal ...
编辑:由于您报告 Python 是 64 位,因此问题几乎肯定是由于 Python PyObjC 项目的 Xcode 模板设置问题造成的。启动代码可能正在加载Apple提供的通用Python解释器。您可以通过在之前添加类似的内容来检查import objc
:
import sys
sys.stderr.write(sys.executable)
对于MacPorts,应该是
/opt/local/Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python
我不太熟悉在 Xcode 下使用模板的细节,不知道可能需要更改哪些内容,而且我怀疑很多人在 MacPorts Python 上使用它们,尤其是在 10.6 下。
另一个想法是,Apple 提供的 Python 2.6.1 附带了已安装的 PyObjC 版本。也许使用它会更简单。或者不使用 Xcode 并使用py2app
或其他解决方案来运行它。