当前位置: 首页 > 面试题库 >

Python的MySQLdb无法通过自制MySQL找到libmysqlclient.dylib

臧正平
2023-03-14
问题内容

我在OS X 10.10.5 Yosemite上安装了带有Homebrew的MySQL和MySQL。我的Python 2.7在处python -> ../Cellar/python/2.7.9/bin/python带有符号链接/usr/local/bin/python

/usr/local/bin其中有一个符号链接:
mysql -> ../Cellar/mysql/5.7.9/bin/mysql

错误

在Python Shell中:

>>> import MySQLdb
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/site-packages/MySQLdb/__init__.py", line 19, in <module>
    import _mysql
ImportError: dlopen(/usr/local/lib/python2.7/site-packages/_mysql.so, 2): Library not loaded: /usr/local/lib/libmysqlclient.18.dylib
  Referenced from: /usr/local/lib/python2.7/site-packages/_mysql.so
  Reason: image not found

所以我尝试了:
$ sudo unlink /usr/local/lib/libmysqlclient.18.dylib

其次是:
DYLD_LIBRARY_PATH=/usr/local/mysql/lib/:$DYLD_LIBRARY_PATH

然后(绝望的原因):
$ export DYLD_LIBRARY_PATH=/usr/local/Cellar/mysql/5.7.9/lib

但是在两种情况下import MySQLdb仍然尝试导入libmysqlclient.18.dylib

然后我尝试
$ pip install -U MySQL-python 了: Requirement already up-to-date: MySQL- python in /usr/local/lib/python2.7/site-packages

现有答案

很多回答
这个
问题
的SO建议您手动进行明确的符号链接到同一个版本号库(对我来说libmysqlclient.20.dylib)。但是,考虑到现有的符号链接,这似乎是粗略的并且不是面向未来的:

/usr/local/lib里面
libmysqlclient.dylib -> ../Cellar/mysql/5.7.9/lib/libmysqlclient.dylib

并且/usr/local/Cellar/mysql/5.7.9/lib我们发现:
libmysqlclient.20.dylib

在同一目录中带有符号链接: libmysqlclient.dylib -> libmysqlclient.20.dylib

如何让Python忘记libmysqlclient.18.dylib

那么,如何让Python忘记/usr/local/lib/libmysqlclient.18.dylib,并按照正确的符号链接在/usr/local/liblibmysqlclient.dylib,无需手动添加另一个符号链接?


问题答案:

这解决了我的问题:

$ pip uninstall MySQL-python
$ pip install mysqlclient

MySQL-python原来非常老(最后一次提交是在7年前)。mysqlclient是它的现代版本,具有许多改进和错误修复。



 类似资料:
  • 问题内容: 我正在尝试使用MySQLdb从Python脚本在MySQL表上执行基本语句。我的桌子看起来像这样: 从MySQL命令行运行此查询可以正常工作: 但是,当我尝试从Python脚本执行查询时,不会插入任何行。这是我的代码: 奇怪的是,这将显示“插入的行数:1”。我还可以确认此查询增加了ID字段,因为当我通过命令行添加另一行时,其ID的值与Python脚本已成功插入其行的值相同。但是,运行查

  • 问题内容: 我有一个脚本,它等待直到数据库中的某些行被更新: 脚本启动时,该行的值为,并等待该值变为 当我运行此脚本时,它将永远挂起。即使我在查询表时看到该行的值已更改为,该脚本的打印输出仍为。 有没有我未设定的设定? 编辑:python脚本仅查询表。对表的更新由tomcat Web应用程序使用JDBC进行,该应用程序是在自动提交时设置的。 问题答案: 这是一个InnoDB表,对不对?InnoDB

  • 我会收到以下错误消息: el=self.driver.find_element_by_xpath(element_query)文件“/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py”,第393行,在find_element_by_xpath中返回self.find_element(by=by.

  • 问题内容: 使用Homebrew进行安装似乎不再起作用。运行后: 我收到以下错误: 简单地做: 错误出在: 这似乎是最新的发展,因为我记得几个月前以这种方式安装它。有关如何在当今的MacOS 上正确安装的任何建议? 问题答案: 这已经作为github问题得到了回答:https : //github.com/Homebrew/homebrew-cask- versions/issues/7253 T

  • 我试图通过xpath获取一个输入元素,但是return语句是false。 当我试图获取标签(它是输入的唯一兄弟)时,它返回true。我也尝试通过输入类型[@type=“checkbox”]获取它,但也失败了。 null

  • 问题内容: 在python中使用MySQLdb库时,如何定义多语句函数或过程? 例: 这将创建以下回溯: 如果我将相同的SQL直接复制到mysql shell客户端中,它将按预期工作 问题答案: 该命令是内置的MySQL Shell客户端,只有该程序(和MySQL查询浏览器)才能识别。如果您直接通过API执行SQL语句,则无需使用。 的目的是帮助您避免在语句本身可以包含分号字符时避免终止语句。这在