[英]Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.21.dylib and Reason image not found
[英]Why libmysqlclient.21.dylib is needed on local with only mysql5.7 running?
在我的本地我有 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
現在只有 mysql@5.7 在我的本地運行,所以我可以看到我有/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
?
我剛剛遇到了同樣的問題(使用 python 3.8),多虧了Bill Karwin 的回答,我才能夠通過使用—-no-cache
選項重新安裝mysqlclient
來修復它,以確保輪子得到重建:
pip uninstall mysqlclient
pip install mysqlclient —-no-cache
在我的案例中,這是導致libmysqlclient.21.dylib
錯誤的事件序列:
mysql
,它安裝了mysql@8
mysqlclient
mysql@5.7
這個項目,降級mysql
libmysqlclient.21.dylib
的錯誤,因為mysqlclient
wheel 是在安裝mysql@8
時構建的MySQLdb 是 C 中實現的 Python 2 模塊,它鏈接到 libmysqlclient。 如果您有一個針對 MySQL 8.0 客戶端庫編譯的 MySQLdb 二進制文件,那么它將有一個對 libmysqlclient21.dylib 的固定引用,如果該庫不存在,則會導致您看到的錯誤。
MySQLdb 也不兼容 Python 3,我希望你現在使用 Python 3 。
您可以使用 PyMySQL 作為 MySQLdb 的替代品。 PyMySQL 是全 Python 的,所以它不應該引用任何 libmysqlclient。
或者,使用MySQL-Connector Python 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.