如何在SnowLeopard的非默认Python安装中安装pyobjc
我在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 个回答
好的,我找到了问题所在。
我的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中。
抱歉没有早点发现这个问题,但我希望这对将来某些人会有帮助!