Python的MySQLdb无法通过自制MySQL找到libmysqlclient.dylib
与Homebrew一起安装的MySQL和Python
我在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/lib
给libmysqlclient.dylib
,无需手动添加另一个符号链接?