库未加载:/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 上),这肯定会起作用.
但更好的解决方案是使用仍在维护的库。不幸的是,那里有很多选择,但我的印象是大多数人使用三大选择之一:
mysqlclient
是 mysql-python
的分支,它绑定到当前版本的 C 库(brew install mysql
或从 MySQL/Oracle 网站下载安装程序)。
PyMySQL
是纯 Python 的重写,甚至不需要 C 库。
MySQL Connector/Python
是 MySQL/Oracle 从头开始编写的新实现。 (您可能需要 Oracle 安装程序。)
PyMySQL
是比 mysqlclient
更好的替代品,它与宇宙中的其他一切都很好地配合,而且它的代码编写得很好,如果你有问题……但它可能会很慢。除非你有一大堆现有代码需要维护,否则你通常不需要完美的直接替换,只需要一些非常接近 connect
调用并支持所有 DB-API 2,mysqlclient
覆盖了那个。
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 上),这肯定会起作用.
但更好的解决方案是使用仍在维护的库。不幸的是,那里有很多选择,但我的印象是大多数人使用三大选择之一:
mysqlclient
是mysql-python
的分支,它绑定到当前版本的 C 库(brew install mysql
或从 MySQL/Oracle 网站下载安装程序)。PyMySQL
是纯 Python 的重写,甚至不需要 C 库。MySQL Connector/Python
是 MySQL/Oracle 从头开始编写的新实现。 (您可能需要 Oracle 安装程序。)
PyMySQL
是比 mysqlclient
更好的替代品,它与宇宙中的其他一切都很好地配合,而且它的代码编写得很好,如果你有问题……但它可能会很慢。除非你有一大堆现有代码需要维护,否则你通常不需要完美的直接替换,只需要一些非常接近 connect
调用并支持所有 DB-API 2,mysqlclient
覆盖了那个。