Python mysqldb:库未加载:libmysqlclient.18.dylib

问题:

我刚刚在我的Mac OS 10.6上编译并安装了mysqldb for python 2.7。我创建了一个简单的导入测试文件

import MySQLdb as mysql

首先,这个命令是红色的下划线,信息告诉我“未解析的导入”。然后我尝试运行以下简单的python代码

import MySQLdb as mysql

def main():
    conn = mysql.connect( charset="utf8", use_unicode=True, host="localhost",user="root", passwd="",db="" )

if __name__ == '__main__'():
    main()

执行时,我收到以下错误消息

Traceback (most recent call last):
  File "/path/to/project/Python/src/cvdv/TestMySQLdb.py", line 4, in <module>
    import MySQLdb as mysql
  File "build/bdist.macosx-10.6-intel/egg/MySQLdb/__init__.py", line 19, in <module>
    \namespace cvdv
  File "build/bdist.macosx-10.6-intel/egg/_mysql.py", line 7, in <module>
  File "build/bdist.macosx-10.6-intel/egg/_mysql.py", line 6, in __bootstrap__
ImportError: dlopen(/Users/toom/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.egg-tmp/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /Users/toom/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.egg-tmp/_mysql.so
  Reason: image not found

什么可能是解决我的问题?
编辑:
其实我发现这个库位于/ usr / local / mysql / lib。所以我需要告诉我的pydev eclipse版本在哪里找到它。我在哪里设置?

回答:

我通过创建一个图书馆的符号链接解决了这个问题。即
实际的图书馆在

/usr/local/mysql/lib

然后我创建了一个象征性的链接

/usr/lib

使用命令:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

所以我有以下映射:

ls -l libmysqlclient.18.dylib 
lrwxr-xr-x  1 root  wheel  44 16 Jul 14:01 libmysqlclient.18.dylib -> /usr/local/mysql/lib/libmysqlclient.18.dylib

就是这样之后,一切都很好。
编辑:
请注意,由于MacOS El Capitan系统完整性保护(SIP,也称为“rootless”)将阻止您在/usr/lib/中创建链接。
您可以按照these instructions关闭SIP,但您可以在/usr/local/lib/中创建一个链接:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib

 
 Code问答: codewenda.com
Stackoverflow:Python mysqldb: Library not loaded: libmysqlclient.18.dylib

发表评论

电子邮件地址不会被公开。 必填项已用*标注

2 + 3 =