首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python mysqldb:未加载库: libmysqlclient.18.dylib

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

Stack Overflow用户
提问于 2011-06-17 16:37:41
回答 14查看 105.9K关注 0票数 177

我刚刚在我的mac os 10.6上编译并安装了mysqldb for python2.7。我创建了一个简单的测试文件

代码语言:javascript
复制
import MySQLdb as mysql

首先,此命令带有红色下划线,并且信息告诉我“未解决的导入”。然后,我尝试运行以下简单的python代码

代码语言:javascript
复制
import MySQLdb as mysql

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

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

在执行它时,我得到以下错误消息

代码语言:javascript
复制
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版本在哪里可以找到它。我该把这个设置在哪里?

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2011-08-06 23:28:29

我通过创建一个指向该库的符号链接解决了这个问题。也就是说。

实际的库驻留在

代码语言:javascript
复制
/usr/local/mysql/lib

然后我在里面创建了一个符号链接

代码语言:javascript
复制
/usr/lib

使用以下命令:

代码语言:javascript
复制
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

这样我就有了下面的映射:

代码语言:javascript
复制
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

就是这样。在那之后,一切都运行得很好。

编辑:

请注意,由于SIP的系统完整性保护( MacOS,也称为“无根”)将阻止您在/usr/lib/中创建链接。您可以通过以下these instructions禁用SIP,但也可以在/usr/local/lib/中创建链接:

代码语言:javascript
复制
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
票数 324
EN

Stack Overflow用户

发布于 2011-08-10 11:18:56

我发现这个问题有另一种解决方案,而不是创建符号链接。

将libmysqlclient.18.dylib所在目录的路径设置为DYLD_LIBRARY_PATH环境变量。我所做的是在我的.bash_profile中放入以下行:

代码语言:javascript
复制
export DYLD_LIBRARY_PATH=/usr/local/mysql-5.5.15-osx10.6-x86/lib/:$DYLD_LIBRARY_PATH

就这样。

票数 60
EN

Stack Overflow用户

发布于 2013-10-28 04:30:51

在我的例子中,我在MacOSX10.9Mavericks上得到了这个错误。我直接从DMG / MySQL网站安装了MySQL社区服务器。

我所需要做的就是将lib文件符号链接到/usr/local/lib目录。

代码语言:javascript
复制
mkdir -p /usr/local/lib   
ln -s /usr/local/mysql/lib/libmysql* /usr/local/lib

额外的好处:如果你也在运行Mac,有一个很棒的工具可以找到像libmysqlclient.18.dylib文件http://apps.tempel.org/FindAnyFile这样的文件。这就是我最初找到dylib文件位置的方式。

票数 37
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6383310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档