gpt4 book ai didi

Python 的 MySQLdb 无法使用 Homebrewed MySQL 找到 libmysqlclient.dylib

转载 作者:IT老高 更新时间:2023-10-28 21:05:51 25 4
gpt4 key购买 nike

使用 Homebrew 安装 MySQL 和 Python

我在 OS X 10.10.5 Yosemite 上使用 Homebrew 安装了 MySQL 和 Python。我的 Python 2.7 位于 python -> ../Cellar/python/2.7.9/bin/python 并在 /usr/local/bin/python 处有一个符号链接(symbolic link).

/usr/local/bin 中有一个符号链接(symbolic link):
mysql -> ../Cellar/mysql/5.7.9/bin/mysql

错误

在 Python 外壳中:

>>> 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并得到:要求已经更新:/usr/local/lib/python2.7/site-packages 中的 MySQL-python

现有答案

许多 answers to this problem on SO建议手动创建带有版本号的库的显式符号链接(symbolic link)(在我的情况下为 libmysqlclient.20.dylib)。然而,考虑到现有的符号链接(symbolic link),这似乎很粗糙,而且不是面向 future 的:

/usr/local/lib中有
libmysqlclient.dylib -> ../Cellar/mysql/5.7.9/lib/libmysqlclient.dylib

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

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

如何让Python忘记libmysqlclient.18.dylib

那么我怎样才能让 Python 忘记 /usr/local/lib/libmysqlclient.18.dylib 并遵循 /usr/local/lib 中的正确符号链接(symbolic link)到 libmysqlclient.dylib,无需手动添加另一个符号链接(symbolic link)?

最佳答案

我也遇到过这个问题。我卸载了 MySQL-python,然后安装了它。

pip uninstall MySQL-python
pip install MySQL-python

更新(基于评论)

在某些情况下,您可能需要按以下方式执行第二个(安装)步骤:

pip install --no-binary MySQL-python MySQL-python

no-binary 选项是让 pip 重新构建它并链接到正确的库:

--no-binary <format_control>

Do not use binary packages. Can be supplied multiple times, and each time adds to the existing value. Accepts either :all: to disable all binary packages, :none: to empty the set, or one or more package names with commas between them. Note that some packages are tricky to compile and may fail to install when this option is used on them.

注意:请注意,MySQL-python需要提及twice .如上所述,第一次出现的是要应用 no-binary 的包的名称。选项,第二个指定要安装的包。

关于Python 的 MySQLdb 无法使用 Homebrewed MySQL 找到 libmysqlclient.dylib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34536914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com