Вы можете попробовать запустить otool, чтобы точно узнать, какие пути к библиотекам ищет расширение MySQLdb
C, _mysql.so
:
$ otool -L /Users/yanigisawa/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so
, а затем имя установленной библиотеки файла библиотеки MySQL:
$ otool -DX /usr/local/mysql/lib/libmysqlclient.16.dylib
Но вам не нужно прибегать к установке DYLD_LIBRARY_PATH
(или использовать install_name_tool
для изменения исполняемого файла); необходимость его установки почти всегда является признаком компонента, который был построен или установлен неправильно. По моему опыту, у проекта MySQL не очень хороший послужной список для согласованности в их сборках и установщиках OS X, так как эта проблема, которую вы цитируете, имеет тенденцию подтверждаться.
Попытка получить рабочую комбинацию библиотек Python
, MySQLdb
и MySQL
в OS X 10.6 - очень распространенная причина разочарования: множество вопросов об этом здесь, в SO и в других местах. Есть несколько причин для этого. Мой совет - пойти с полным решением от одного из сторонних дистрибьюторов, который будет создавать и устанавливать совместимые версии всего, что вам нужно. И он должен продолжать работать, если вам нужно обновить компоненты с течением времени. За эти годы у меня был хороший успех с MacPorts
; другие предпочитают Fink
или новее HomeBrew
. С MacPorts
, после установки базовых файлов из MacPorts. dmg
, вы можете получить все построенное так:
$ sudo port selfupdate # ensure the port files are up-to-date
$ sudo port install py26-mysql
MacPorts Python будет доступен на /opt/local/bin/python2.6
. Если вы хотите запустить Django
, для этого также есть порт.
РЕДАКТИРОВАТЬ: с обновленным выводом из otool
, вы можете увидеть, что существует несоответствие имен путей библиотеки. Расширение MySQLdb запрашивает относительный путь (без начального /
), в то время как библиотека MySQL объявляет себя с абсолютным путем, обычно тем, что вы хотите. Похоже, что это обратная проблема MySQL 59006, но, не зная точно, какие шаги вы выполняли до сих пор, очень сложно сказать, как вы попали в это состояние. Вы можете иметь возможность использовать install_name_tool
для исправления _mysql.so
, чтобы получить абсолютный путь, который также устранял бы необходимость в установке DYLD_LIBRARY_PATH
. Стоит попробовать:
$ cd ~/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp
$ sudo install_name_tool -change libmysqlclient.16.dylib \
/usr/local/mysql/lib/libmysqlclient.16.dylib \
_mysql.so
Но это не должно оставить у вас теплое и нечеткое чувство, что вы можете воспроизвести результаты, когда вам нужно что-то обновить. На самом деле нет смысла пытаться склеить все эти кусочки из разных источников во что-то, что работает.