Обновление для тех, кто использует 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-egg
Шаг 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 ..
выйти из каталога сборки, и ошибка должна исчезнуть.
Как я уже писал вверху, мне бы хотелось, чтобы этот ответ был обобщен, поскольку существует множество других конкретных примеров этой ужасной проблемы. Отредактируйте или дайте свой собственный, лучший ответ.