解决在虚拟环境下 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相关文件的位置。
新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)