库未加载:/usr/local/opt/mysql/lib/libmysqlclient.21.dylib 和未找到图像的原因

Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.21.dylib and Reason image not found

Traceback (most recent call last):
  File "/Applications/MAMP/htdocs/Minor Project/xyz.py", line 5, in <module>
    import config
  File "/Applications/MAMP/htdocs/Minor Project/config.py", line 5, in <module>
    import MySQLdb
  File "/Users/brijeshlakkad/Library/Python/2.7/lib/python/site-packages/MySQLdb/__init__.py", line 19, in <module>
    import _mysql
ImportError: dlopen(/Users/brijeshlakkad/Library/Python/2.7/lib/python/site-packages/_mysql.so, 2): Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.21.dylib
  Referenced from: /Users/brijeshlakkad/Library/Python/2.7/lib/python/site-packages/_mysql.so
  **Reason: image not found**

当我使用“brew install mysql”安装mysql时,文件将被执行。当我执行 brew install mysql 时,有两个不同的 mysql 和 运行 分别。我执行了这个文件,然后所有数据都存储在 local mysql 不同于 phpmyadmin mysql.

简而言之,您的问题是您正在尝试使用古老的 mysql-python 库,又名 MySQLdb。该库在 MySQL 5.1 天左右被废弃,因此它不支持 MySQL 6 及更高版本,并且您可能拥有 MySQL 8.0,因此它正在寻找的共享库不支持存在,因此 image not found 错误。

Homebrew 确实包含一个mysql@5.5包,我认为它有一个名称正确的dylib,可能是如果您真的想那样做,已经足够大可以使用 mysql-python,但它不会得到支持。或者您可以下载 MySQL 5.0 或 5.1 源代码并自己构建它(没有任何早于 5.6 的 Mac 二进制文件会 运行 在当前的 macOS 上),这肯定会起作用.

但更好的解决方案是使用仍在维护的库。不幸的是,那里有很多选择,但我的印象是大多数人使用三大选择之一:

  • mysqlclientmysql-python 的分支,它绑定到当前版本的 C 库(brew install mysql 或从 MySQL/Oracle 网站下载安装程序)。
  • PyMySQL 是纯 Python 的重写,甚至不需要 C 库。
  • MySQL Connector/Python 是 MySQL/Oracle 从头开始​​编写的新实现。 (您可能需要 Oracle 安装程序。)

PyMySQL 是比 mysqlclient 更好的替代品,它与宇宙中的其他一切都很好地配合,而且它的代码编写得很好,如果你有问题……但它可能会很慢。除非你有一大堆现有代码需要维护,否则你通常不需要完美的直接替换,只需要一些非常接近 connect 调用并支持所有 DB-API 2,mysqlclient 覆盖了那个。