Python, Brew и MySQLdb

Пускам python от инсталация на brew. Отидох да инсталирам яйцето mysql_python с инструменти за настройка (стандартно инсталиране според инструкциите на mysql_python) и то се инсталира в /usr/local/lib/python2.7/site-packages/. Обработените зависимости и др.

След това отидох да стартирам конзолата на Python. Мога да импортирам други неща (напр. import django; print django.VERSION работи), но когато импортирам MySQLdb, получавам следната грешка:

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

Някакво прозрение? Благодаря много.


person user592419    schedule 10.09.2011    source източник
comment
Звучи сякаш смесвате родния OSX Python и Brew Python по някакъв начин. Точните инсталационни команди и изход биха били полезни за решаването на този проблем.   -  person Mikko Ohtamaa    schedule 11.09.2011
comment
Мисля, че и аз го направих. Инсталационните команди за mysql_python бяха много елементарни, просто правех python setup.py build; python setup.py инсталирайте. Изглежда, че инсталацията на яйцето беше на python2.7, но конзолата на python се отваря от директорията на brew. Някакви идеи как да разплетем тази смес?   -  person user592419    schedule 11.09.2011
comment
Когато инсталирахте python setup.py, използвахте ли Python за OSX или Python, създаден от Brew?   -  person Mikko Ohtamaa    schedule 11.09.2011


Отговори (1)


Опитвайки се да дублирам вашата грешка, направих следното (предполагам, че като домашен пивовар сте направили същото).

1) brew install python За инсталиране на Python 2.7
2) brew install mysql За инсталиране на mysql в системата (необходим за различни драйвери)
3) Конфигуриран mysql според препоръките на homebrew
4) Изтеглен mysql_python и го разархивира
5) Инсталира mysql_python с помощта на python setup.py install
6) Тества го в интерактивна сесия python, import _mysql

След като преминах през тези стъпки на Lion, не можах да възпроизведа вашата грешка. Сега... към отстраняването на грешки във вашия проблем.

Няколко неща, които трябва да проверите:
1) Във вашия терминал, когато въведете which python, сочи ли към вашата инсталация на homebrew?
2) Имайте предвид, че с homebrew пакетите за сайтове не се съхраняват в Cellar, а се съхраняват в /usr/local/lib/python2.7/site-packages. Вижте тази публикация за повече информация защо. Не ми се е налагало да добавя местоположението на пакетите на сайта към моя PATH, но може да опитате.
3) Последното нещо, което бих могъл да предложа да опитате, е да накарам easy_install да работи с Python на homebrew, който имах за да добавя /usr/local/share/python към моя PATH.

РЕДАКТИРАНЕ
След като прочетох отново съобщенията за грешка, главно след превъртане докрай надясно, забелязах, че не може да зареди mysql библиотека. Бързо търсене в Google на тази библиотека изглежда, че при инсталиране на mysql на OS X може да има трудности при свързването към нея. Опитайте да намерите файла libmysqlclient.18.dylib и запишете пътя му. След инсталиране на mysql чрез homebrew моята е: /usr/local/Cellar/mysql/5.5.14/lib. Общата корекция, която съм виждал, коригира променливата на средата DYLD_LIBRARY_PATH. За повече информация откъде взех това вижте този сайт. Използвайки моя път като пример, бих добавил този ред към моя .bash_profile

export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/usr/local/Cellar/mysql/5.5.14/lib"

Ако това не работи за вас, бих проучил сериозно възможността mysql да не е инсталиран правилно или да има проблеми. С това мислене се надяваме, че нещо ще изскочи при вас.

И накрая, ако все още нямате sql бази данни, може ли да ви предложа да деинсталирате mysql и да го инсталирате чрез homebrew? Сега нямам проблеми с тази настройка.

person Adam Lewis    schedule 11.09.2011
comment
1. кой python сочи към /usr/local/bin/python, което изглежда е символна връзка за homebrew. Една от причините, поради които смятам, че това е вярно, е, че грешката показва, че конзолата търси в пакетите на сайта Cellar. 2. Директорията Cellar /usr/local/Cellar/python/2.7.1/lib/python2.7/site-packages съдържа яйцето MySQL_python в нея (точно като /usr/local/.../p2.7/ s-p dir) 3. /usr/local/share/python вече е на пътя ми - person user592419; 11.09.2011
comment
има ли значение откъде стартирам „python setup.py install“? - person user592419; 11.09.2011
comment
@user592419: Това бих предположил. Предположих, че се обажда на сварения питон, ако не беше, сигурен съм, че щяхте да имате много други проблеми. - person Adam Lewis; 11.09.2011
comment
@user592419: Докато setup.py не прави нищо необичайно - Не. По принцип dist_tools, който създава setup.py, е направен така, че да инсталира цялото съдържание в изпълнителя (намерено от which python) сайт-пакети. След като прочетох отново съобщението за грешка, мисля, че всъщност може да е проблем с mysql, а не с homebrew / python. - person Adam Lewis; 11.09.2011
comment
@user592419: Вижте моята редакция. Може да съм намерил полезна информация за вас. - person Adam Lewis; 11.09.2011
comment
Страхотно, вече работи. Следвайки някои от вашите предложения, след това отидох и проверих кой mysql и открих, че сочи към различна версия. Промених пътя си, така че да вижда избата версия на mysql, преработих командите на python setup.py и сега изглежда добре. Благодаря Адам. - person user592419; 11.09.2011