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

时间:2018-07-17 06:39:56

标签: python mysql homebrew mysql-python

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都分别运行。我执行了此文件,然后将所有数据存储在与 phpmyadmin mysql 不同的本地mysql 中。

1 个答案:

答案 0 :(得分:0)

简而言之,您的问题是您试图使用古老的mysql-python库(又名MySQLdb)。该库在MySQL 5.1天左右就被废弃了,因此它不支持MySQL 6和更高版本,并且您大概拥有MySQL 8.0,因此它所寻找的共享库不存在,因此出现image not found错误。 / p>

自制软件确实包括一个mysql@5.5程序包,我认为该程序包具有一个带有正确名称的dylib,该程序包可能已经足够老,可以与{{1 }},如果您真的想那样做,但不会受到支持。或者,您可以下载MySQL 5.0或5.1源并自行构建(没有Mac二进制文件可以在当前macOS上运行的5.6之前的任何版本)。

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

  • mysql-pythonmysqlclient的分支,它绑定到C版本的当前版本(mysql-python或从MySQL / Oracle网站下载安装程序)。
  • brew install mysql是用纯Python重写的,它甚至不需要C库。
  • PyMySQL是MySQL / Oracle从头开始编写的新实现。 (您可能希望将Oracle Installer与该安装程序一起使用。)
MySQL Connector/Python相比,

PyMySQL是一种更好的直接替换,它可以与Universe中的其他所有内容一起使用,并且它是编写良好的代码,如果有问题,则很容易调试...但是速度可能会很慢。而且,除非需要维护一堆完整的现有代码,否则通常不需要完美的即插即用替换,只需进行非常接近的mysqlclient调用并支持所有DB-API 2 ,而connect涵盖了这一点。