libmysqlclient.xx.dylib在虚拟环境下import error解决

libmysqlclient.xx.dylib在虚拟环境下import error解决


类似这种报错,image not found

import MySQLdb
Traceback (most recent call last):
File “”, line 1, in
File “/Users/jtr109/qs/venv/lib/python2.7/site-packages/MySQLdb/init.py”, line 19, in
import _mysql
ImportError: dlopen(/Users/qs/venv/lib/python2.7/site-packages/_mysql.so, 2): Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.20.dylib
Referenced from: /Users/jtr109/qs/venv/lib/python2.7/site-packages/_mysql.so
Reason: image not found

环境:Mac os+anaconda3, 虚拟环境python=3.5

  1. 用otool查看下指向位置信息:
    otool -L /Users/[username]/anaconda3/envs/[envname]/lib/python3.5/site-packages/MySQLdb/_mysql.cpython-35m-darwin.so
    @rpath/libmysqlclient.21.dylib (compatibility version 21.0.0, current version 21.0.0)
    @rpath/libssl.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
    @rpath/libcrypto.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.250.1)

    问题出在@rpath/libmysqlclient.21.dylib的@rpath,@rpath指向的相对路径不明,要打印出来需要花费另外一番功夫。我们绕过,用install_name_tool直接修改它为正确的绝对路径。

  2. install_name_tool [-change old new] input
    sudo install_name_tool -change @rpath/libmysqlclient.21.dylib /usr/local/mysql/lib/libmysqlclient.21.dylib /Users/[username]/anaconda3/envs/[envname]/lib/python3.5/site-packages/MySQLdb/_mysql.cpython-35m-darwin.so

  3. 再次用otool查看下指向位置信息:
    otool -L /Users/xiaojunzhou/anaconda3/envs/wand/lib/python3.5/site-packages/MySQLdb/_mysql.cpython-35m-darwin.so

/Users/xiaojunzhou/anaconda3/envs/wand/lib/python3.5/site-packages/MySQLdb/_mysql.cpython-35m-darwin.so:
/usr/local/mysql/lib/libmysqlclient.21.dylib (compatibility version 21.0.0, current version 21.0.0)
@rpath/libssl.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
@rpath/libcrypto.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.250.1)

参考资料:
1.https://stackoverflow.com/questions/51002735/python-mysqldb-err-on-my-mac-library-not-loaded-rpath-libmysqlclient-21-dylib,见Sam S.的回答
2.https://stackoverflow.com/questions/6383310/python-mysqldb-library-not-loaded-libmysqlclient-18-dylib
解决不了的可以看看这个高赞答案,我这种不是软连接的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值