Проблемы установки mysql-python (на Mac OS X Lion) - PullRequest
10 голосов
/ 07 сентября 2011

Я установил все успешно, или я подумал:

  • MySQL 5.5 для x86_64.
  • Python 2.7, x86_64.
  • mysql-python 1.2.3, x86_64.

Но когда я пытаюсь:

import MySQLdb

я получаю:

    ImportError: 
dlopen(/Users/aj/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-ix86_64.egg-tmp/_mysql.so, 2): 
no suitable image found.  
Did find:   
/Users/aj/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-ix86_64.egg-tmp/_mysql.so: mach-o, 
but wrong architecture

Что еще я могу упустить?

Моя система, конечно, тоже 64-битная версия, uname -a дает:

Darwin ajmacbook.local 11.1.0 Darwin Kernel Version 11.1.0: Tue Jul 26 16:07:11 PDT 2011; root:xnu-1699.22.81~1/RELEASE_X86_64 x86_64

Я думаю, что прочитал большинство SO ответов и результатов Google по этому вопросу, не могу придумать что-либо еще, чтобы попробовать.Любое предложение будет оценено.

Ответы [ 5 ]

11 голосов
/ 07 сентября 2011

Я думаю, что это может быть немного странно при использовании этого на 64-битном Mac (и если вы гуглите, эта проблема также часто появляется).

Я столкнулся с этим, и есть парачто вы можете сделать:

Переопределить среду

Вы можете изменить переменную среды DYLD_LIBRARY_PATH, которая сообщает компоновщику, где искать динамические библиотеки (файлы .so и т. п.).Вы сказали, что также загрузили 64-разрядную версию MySQL, поэтому, где бы она ни была установлена, измените путь, который вы видите здесь:

В оболочке:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/

А затем запустите python и посмотрите, сможете ли вы import MySQLdb.

Если это сработает, вы можете сделать это перманентом, изменив свой профиль оболочки (.bash_profile, скорее всего).

Используйте homebrew

Мне не очень нравится осматриваться с проверкой MySQL и Python и всех правильных архитектур и установкой их отдельно.Я запускаю homebrew, который является своего рода диспетчером пакетов для Mac.Если вы установите его, вы можете легко решить эту проблему:

  • brew install python
  • brew install mysql
  • /usr/local/share/python/easy_install mysql-python

Обратите внимание, что homebrew устанавливается в /usr/local, поэтому вы должны добавить /usr/local/bin к своим PATH, опередив /usr/bin и /bin, иначе вы действительно запутаетесь, почему python отличается.

Вы также можете добавить /usr/local/share/python к PATH, чтобы сделать его постоянным.

9 голосов
/ 07 сентября 2011

С помощью комментария от @birryree я нашел проблему.Возможно, мне было бы лучше следовать процедуре, предложенной @birryree в его ответе, но я пробовал это раньше, и это сработало:

Как я и предполагал, я сделал:

file /Users/aj/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-ix86_64.egg-tmp/_mysql.so

Чтобы получить:[...]: Mach-O bundle i386 Итак, неправильная архитектура.Оттуда я сделал то же самое с mysql и python, чтобы быть уверенным: file $(which python) дал:

/Library/Frameworks/Python.framework/Versions/2.7/bin/python: Mach-O universal binary with 2 architectures
/Library/Frameworks/Python.framework/Versions/2.7/bin/python (for architecture i386):   Mach-O executable i386
/Library/Frameworks/Python.framework/Versions/2.7/bin/python (for architecture x86_64): Mach-O 64-bit executable x86_64

И file $(which mysql):

/usr/local/mysql/bin/mysql: Mach-O 64-bit executable x86_64

Поэтому я удалил mysql-pythonпакет: sudo pip uninstall mysql-python и снова его установил.Но, сделав это, я понял свою предыдущую ошибку при установке этого пакета.Первый раз я набрал:

sudo ARCHFLAGS='-arch ix86_64' python setup.py build (и потом «установить»)

Имя архитектуры было неверным, должно быть «-arch x86_64», без «i», поэтому оно просто игнорируетсяМой флаг и установил 32bit.

Правильные команды для установки загруженного пакета mysql-python для 64bit (из исходной папки):

sudo ARCHFLAGS='-arch x86_64' python setup.py build
sudo ARCHFLAGS='-arch x86_64' python setup.py install
3 голосов
/ 26 октября 2011

ОЧЕНЬ ВАЖНО!

Как уже упоминалось выше, убедитесь, что вы используете 64-битную версию mysql.Эту деталь легко не заметить, особенно если вы обновились со Snow Leopard.(Я, конечно, сделал).

, если вы не уверены в том, чтобы удалить старую версию mysql в вашей системе, обратитесь к этому сообщению: http://johnmcostaiii.net/2011/removing-mysql-osx-lion/

2 голосов
/ 03 января 2013

У меня была та же проблема, и после MySQLdb у меня возникла сильная головная боль после исправления проблемы с 64-битной версией (она также жаловалась на то, где находится libmysqlclient.18.dylib).

Думаю, пришло время переключиться наофициальный MysQL Python Connector?

sudo pip install mysql-connector-python

Или загрузите его с: http://dev.mysql.com/downloads/connector/python/

Документация: http://dev.mysql.com/doc/refman/5.5/en/connector-python.htm

Он прост в использовании и совместим с PEP 249 (Python DB API версии 2.0).

1 голос
/ 28 сентября 2012

Также убедитесь, что вы используете Python 64-bit . Я работал под управлением 64-битной версии MySQL и 32-битной версии Python, поэтому я получил ошибку «но неправильная архитектура»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...