
您可以尝试运行otool来确切找出
MySQLdbC扩展
_mysql.so正在查找的库路径:
$ otool -L /Users/yanigisawa/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so
然后是已安装的MySQL库文件的库名称:
$ otool -DX /usr/local/mysql/lib/libmysqlclient.16.dylib
但是您不必诉诸设置
DYLD_LIBRARY_PATH(或
install_name_tool用于修改可执行文件);设置它的需要几乎总是表明组件构建或安装不正确。以我的经验,MySQL项目在其OS
X构建和安装程序的一致性方面没有很好的跟踪记录,因为您引用的这个问题往往会得到证实。
试图让的工作相结合
Python,
MySQLdb以及
MySQL在OS X
10.6库是无奈的一个非常常见的原因:很多关于它的问题在这里SO和其他地方。有很多原因。我的建议是从第三方分销商之一那里获得完整的解决方案,该解决方案将构建和安装您所需的所有内容的兼容版本。如果您需要随着时间的推移升级组件,它应该可以继续工作。这些年来,我取得了很大的成功
MacPorts;其他人更喜欢
Fink或更新
HomeBrew。使用
MacPorts,从MacPorts安装基本文件后。
dmg,您可以像这样构建所有内容:
$ sudo port selfupdate # ensure the port files are up-to-date$ sudo port install py26-mysql
MacPorts Python将在上提供
/opt/local/bin/python2.6。如果您想运行
Django,那么也有一个端口。
编辑:使用来自的更新输出
otool,您可以看到库路径名不匹配。MySQLdb扩展名要求一个相对路径名(没有initial
/),而MySQL库使用绝对路径(通常是您想要的)来宣传自己。这似乎与MySQL问题59006相反,但是,在不确切知道到目前为止您已经执行了哪些步骤的情况下,很难说出如何达到此状态。您
可能
可以使用
install_name_tool来打补丁
_mysql.so以具有绝对路径名,这也将消除对set的任何需要
DYLD_LIBRARY_PATH。值得尝试:
$ cd ~/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp$ sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql/lib/libmysqlclient.16.dylib _mysql.so
但这不应该让您感到温暖和模糊,可以在需要更新某些内容时重现结果。试图将来自不同来源的所有这些片段粘合成有效的东西确实没有任何好处。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)