Python: MySQLdb и " библиотека не загружена: libmysqlclient.16.dylib"
настройки...
попытка настроить чистую установку Mac os X 10.6 для разработки python / django, и я не помнил, как столкнулся с этим на 10.5.
после установки MySQL из установщика на mysql-5.5.8-osx10.6-x86_64.dmg
Я побежал
$ sudo pip install MySQL-python
и это, казалось, шло гладко (вывод ниже)
Downloading/unpacking MySQL-python
Downloading MySQL-python-1.2.3.tar.gz (70Kb): 70Kb downloaded
Running setup.py egg_info for package MySQL-python
warning: no files found matching 'MANIFEST'
warning: no files found matching 'ChangeLog'
warning: no files found matching 'GPL'
Installing collected packages: MySQL-python
Running setup.py install for MySQL-python
building '_mysql' extension
gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -pipe -Dversion_info=(1,2,3,'final',0) -D__version__=1.2.3 -I/usr/local/mysql/include -I/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c _mysql.c -o build/temp.macosx-10.6-universal-2.6/_mysql.o -Os -g -fno-common -fno-strict-aliasing -arch x86_64
In file included from _mysql.c:36:
/usr/local/mysql/include/my_config.h:325:1: warning: "SIZEOF_SIZE_T" redefined
In file included from /System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/Python.h:9,
from pymemcompat.h:10,
from _mysql.c:29:
/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/pymacconfig.h:33:1: warning: this is the location of the previous definition
In file included from _mysql.c:36:
/usr/local/mysql/include/my_config.h:419:1: warning: "HAVE_WCSCOLL" redefined
In file included from /System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/Python.h:8,
from pymemcompat.h:10,
from _mysql.c:29:
/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/pyconfig.h:803:1: warning: this is the location of the previous definition
gcc-4.2 -Wl,-F. -bundle -undefined dynamic_lookup build/temp.macosx-10.6-universal-2.6/_mysql.o -L/usr/local/mysql/lib -lmysqlclient_r -lpthread -o build/lib.macosx-10.6-universal-2.6/_mysql.so -arch x86_64
warning: no files found matching 'MANIFEST'
warning: no files found matching 'ChangeLog'
warning: no files found matching 'GPL'
Successfully installed MySQL-python
Cleaning up...
после этого я попробовал:
$ python -c "import MySQLdb"
и он обосрался на меня с:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/Library/Python/2.6/site-packages/MySQLdb/__init__.py", line 19, in <module>
import _mysql
ImportError: dlopen(/Library/Python/2.6/site-packages/_mysql.so, 2): Library not loaded: libmysqlclient.16.dylib
Referenced from: /Library/Python/2.6/site-packages/_mysql.so
Reason: image not found
Итак, на мой вопрос...
что я сделал неправильно?/Что еще мне нужно сделать?
Googling (и поиск здесь) для этого возвращает много результатов, получая это сообщение об ошибке с Ruby не слишком много с Python tho.
6 ответов:
_mysql.so
относится кlibmysqlclient.16.dylib
. То есть общая библиотека, которая служит мостом между Python и клиентской библиотеки MySQL,_mysql.so
, ссылается на динамическую библиотеку для клиентской библиотеки MySQL, и эта библиотека не может быть загружена по какой-то причине.вопросы, на которые вы должны ответить:
- есть
libmysqlclient.16.dylib
где-нибудь в вашей системе? Если нет, то вам необходимо установить программное обеспечение клиента MySQL.- если да, то это каталог, содержащий библиотека в вашем
DYLD_LIBRARY_PATH
настройки? Если нет, попробуйте добавить его.- если это так, вам придется убедиться, что
libmysqlclient.16.dylib
файл не поврежден. Мой копия, установленная в/opt/local/lib/mysql5/mysql/libmysqlclient.16.dylib
, вежливость MacPorts, имеет подпись MD5c79ee91af08057dfc269ee212915801a
и составляет 1,462,376 байт в размере. Как выглядит ваша копия?
просто установить
DYLD_LIBRARY_PATH
послеpip install
илиeasy_install
:export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/
должен выполнять работу, предполагая, что ваша установка MySQL живет под
/usr/local/mysql
.
после easy_install, я создаю мягкую ссылку, которая решила проблему
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
Он также может появиться, если ваш клиент MySQL новее, чем ваш пакет MySQL-python. В моем случае, у меня был libmysqlclient_r. 18.dylib на моей машине, но не libmysqlclient_r.16.dylib нужна. Работает
pip search mysql
выявленоMySQL-python-Python интерфейс к MySQL установлен: 1.2.3 Последний: 1.2.3с1
и под управлением
pip install --upgrade MySQL-python
фиксированная моя проблема.