如何在SnowLeopard的非默认Python安装中安装pyobjc

2 投票
1 回答
891 浏览
提问于 2025-04-15 22:05

我在SnowLeopard上安装pyobjc时遇到了问题。

系统自带的是python 2.6,但我需要用2.5,所以我成功安装了2.5。接着,我又安装了xcode。然后我用“easy_install-2.5 pyobjc”安装了pyobjc。

但是,当我启动python 2.5并在命令行尝试导入Foundation时,它提示“没有名为Foundation的模块”。

我试着在启动python解释器之前执行 export PYTHONPATH="/Library/Python/2.5/site-packages/pyobjc_core-2.2-py2.5-macosx-10.6-i386.egg/objc" 但还是不行(这个.egg目录是pyobjc安装后唯一生成的目录,site-packages里还有几个其他的egg文件……在objc子目录里有一个init.py文件)。

当然,在2.6上一切都正常。那么我该如何找出问题所在,应该怎么做呢?

当我从python 2.6打印sys.modules时,我发现导入的objc基本上来自同一个安装位置“/Library/Python/2.6/site-packages/pyobjc_core-2.2-py2.6-macosx-10.6-universal.egg/objc/”,那么为什么在2.5上就不行呢?

1 个回答

4

好的,我找到了问题所在。

我的SnowLeopard系统里同时安装了Python 2.6(默认版本)和2.5。

XCode也为这两个版本安装了objc。

所以基本上,我因为手动安装了额外的Python 2.5和objc,搞坏了我的python路径等设置,导致某些库不兼容(我安装的和原来的Python都是2.5.4,但版本略有不同,更重要的是可能是用不同的选项构建的)。

我做的事情是:确保我一切都从原来的Python 2.5启动(在我的系统里,它位于/usr/bin/python2.5),从site-packages里的easy_install.pth中删除错误的条目,并将PyObjc的路径添加到easy_install.pth中。

抱歉没有早点发现这个问题,但我希望这对将来某些人会有帮助!

撰写回答