在我的本地程序中,mysql@5.7正在运行。我有一个依赖mysql的应用程序,但是有一个有趣的错误:
File "/xxx/lib/python3.7/site-packages/MySQLdb/__init__.py", line 18, in <module>
from . import _mysql
ImportError: dlopen(/xxx/lib/python3.7/site-packages/MySQLdb/_mysql.cpython-37m-darwin.so, 2): Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.21.dylib
Referenced from: /xxx/lib/python3.7/site-packages/MySQLdb/_mysql.cpython-37m-darwin.so
Reason: image not found/usr/local/opt/mysql@5.7/lib/libmysqlclient.20.dylib,但我从来没有/usr/local/opt/mysql/lib/libmysqlclient.21.dylib。为什么这里需要它呢?libmysqlclient.21.dylib只由mysql8.0+提供site-packages/MySQLdb在做什么?猜一下连接到我的本地mysql?那么,它为什么要问不存在的21.dylib呢?发布于 2022-03-23 03:25:20
我刚刚遇到了同样的问题(使用python3.8),感谢比尔·卡温的回答能够通过重新安装带有—-no-cache选项的mysqlclient来修复它,以确保车轮得到重建:
pip uninstall mysqlclient
pip install mysqlclient —-no-cache在我的例子中,导致libmysqlclient.21.dylib错误的事件顺序如下:
mysql,后者安装了mysql@8mysqlclientmysql@5.7来做这个项目,降低了mysql的等级libmysqlclient.21.dylib的错误,因为mysqlclient车轮是在安装mysql@8时生成的。发布于 2022-02-18 16:28:27
MySQLdb是用C实现的Python2模块,它链接到libmysqlclient。如果您的二进制MySQLdb是针对MySQL 8.0客户端库编译的,那么它将有一个对libmysqlclient21.dylib的固定引用,如果该库不存在,这将导致您看到的错误。
MySQLdb也与Python3和我希望你现在使用Python 3不兼容。
您可以使用PyMySQL代替MySQLdb。PyMySQL是all-Python,所以它不应该引用任何libmysqlclient。
或者,使用MySQL-Connector Python。
https://stackoverflow.com/questions/71168895
复制相似问题