欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

解决在虚拟环境下 MySQLdb 模块的 Reason: image not found

程序员文章站 2022-06-17 11:34:16
...

Reason: image not found

  • 我的问题的发生背景:Mac系统,新建虚拟环境,安装MySQLdb。
  • pip install mysql-python
  • import MySQLdb时报错:
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
  • 其实问题就是:_mysql.so找不到 libmysqlclient.18.dylib 了。
  • 解决方案就是:手动重新配置路径,让它能找到。

方法一

  • 我是用该方法成功解决
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql
  • 注释:就是在对应的位置创建 软连接 指向mysql相关文件的位置。
  • timonweb参考

  • 新MacOS系统,在操作系统文件会没有权限:Operation not permitted

  • 解决方案:关闭安全机制
  • 重启按住 Command+R,进入恢复模式,打开Terminal:csrutil disable
  • 然后,就可以操作Mac的系统文件了
  • 启动安全模式,在恢复模式下的Terminal运行:csrutil enable
  • CSDN参考

方法二

  • 该方法没有成功解决我的问题

  • 报错:

ImportError: dlopen(/Library/Python/2.7/site-packages/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib Referenced from: /Library/Python/2.7/site-packages/_mysql.so Reason: image not found
  • 查看,发现没有libmysqlclient.18.dylib文件路径
% otool -L /Library/Python/2.7/site-packages/_mysql.so
/Library/Python/2.7/site-packages/_mysql.so:
    libmysqlclient.18.dylib (compatibility version 18.0.0, current version 18.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
  • 手动配置路径
% sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /Library/Python/2.7/site-packages/_mysql.so
  • 再次查看,已经有查找路径了
% otool -L /Library/Python/2.7/site-packages/_mysql.so                                                                                           
/Library/Python/2.7/site-packages/_mysql.so:
    /usr/local/mysql/lib/libmysqlclient.18.dylib (compatibility version 18.0.0, current version 18.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
  • 但是,我配置完成后,每次导入MySQLdb后,路径又消失了。但是,可以作为备选方案。
  • 简书参考
    • 如该博文的作者所说:每次配置新的环境都需要手动配置该路径,进一步使用脚本(fix-mysql-python.sh)来处理。
  • *参考
相关标签: python2.7 MySQLdb