Обновление для тех, кто использует Python3:
Вы можете просто использовать conda install mysqlclient
для установки библиотек, необходимых для использования MySQLdb, так как он существует в настоящее время. Следующий SO вопрос был полезной подсказкой: Python 3 ImportError: нет модуля с именем 'ConfigParser' . Установка mysqlclient установит mysqlclient, mysql-connector и llvmdev (по крайней мере, эти 3 библиотеки были установлены на моей машине).
Вот история моего бессвязного опыта с этой проблемой. Хотелось бы, чтобы оно было отредактировано или обобщено, если у вас есть лучший опыт в этой проблеме ... примените немного этой ТАКОЙ магии.
Примечание. Комментарии в следующем абзаце применяются к Snow Leopard, но не к Lion, для которого, как представляется, требуется 64-разрядная версия MySQL
Во-первых, автор (все еще?) MySQLdb говорит здесь , что одна из самых пагубных проблем заключается в том, что OS X поставляется с 32-битной версией Python, но большинство средних приложений (включая меня) ), вероятно, перейти к установке 64-разрядной версии MySQL. Плохое движение ... удалите 64-битную версию, если вы ее установили (инструкции по этой непростой задаче доступны на SO здесь ), затем загрузите и установите 32-битную версию (пакет здесь )
Существует множество пошаговых инструкций по сборке и установке библиотек MySQLdb. Они часто имеют тонкие различия. Этот показался мне наиболее популярным и предоставил рабочее решение. Я воспроизвел это с парой правок ниже
Шаг 0:
Перед тем, как начать, я предполагаю, что на Mac установлены MySQL, Python и GCC .
Шаг 1:
Загрузите последнюю версию MySQL для Python адаптер с SourceForge.
Шаг 2:
Извлеките загруженный пакет:
tar xzvf MySQL-python-1.2.2.tar.gz
Шаг 3:
Внутри папки очистите пакет:
sudo python setup.py clean
пара дополнительных шагов, (с этот комментарий )
Шаг 3b:
Удалите все, что находится в каталоге MySQL-python-1.2.2 / build / * - не верьте «python setup.py clean», чтобы сделать это за вас
Шаг 3c:
Удалите яйцо в папке Users / $ USER / .python-eggs
Шаг 4:
Изначально требовалось редактирование _mysql.c, но теперь это НЕ НУЖНО. Сообщество MySQLdb, похоже, исправило эту ошибку сейчас.
Шаг 5:
Создайте символьную ссылку в lib для указания на подкаталог с именем mysql. Вот где он ищет во время компиляции.
sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql
Шаг 6:
Отредактируйте файл setup_posix.py и измените следующее
mysql_config.path = "mysql_config"
до
mysql_config.path = "/ usr / local / mysql / bin / mysql_config"
Шаг 7:
В том же каталоге пересоберите свой пакет (игнорируйте все предупреждения, которые идут с ним)
sudo python setup.py build
Шаг 8:
Установите пакет, и все готово.
sudo python setup.py install
Шаг 9:
Проверьте, работает ли он. Это работает, если вы можете импортировать MySQLdb.
python
>>> import MySQLdb
Шаг 10:
Если при попытке импорта вы получаете сообщение об ошибке Library not loaded: libmysqlclient.18.dylib
, оканчивающееся на: Reason: image not found
, вам необходимо создать еще одну символическую ссылку:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
После этого вы сможете без ошибок import MySQLdb
.
И последний недостаток: если вы запустите Python из каталога сборки, вы получите эту ошибку:
/ Library / Python / 2.5 / site-packages / MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg / _mysql.py: 3: UserWarning: модуль _mysql уже был импортирован из / Library / Python /2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.pyc, но XXXX / MySQL-python-1.2.3c1 добавляется в sys.path
Это довольно просто для Google, но чтобы избавить вас от неприятностей, вы в конечном итоге здесь (или, возможно, нет ... не особо перспективный URL) и выясните, что вам нужно cd ..
вне каталога сборки и ошибка должна исчезнуть.
Как я уже писал вверху, я хотел бы, чтобы этот ответ был обобщенным, поскольку существует множество других конкретных примеров этой ужасной проблемы. Отредактируйте или предоставьте свой лучший ответ.