Установка MySQLdb под OS X Lion

После покупки нового ноутбука я столкнулся с проблемой установки на OS X Lion библиотеки для доступа к MySQL для языка python. До этого эта проблема не возникала видимо из-за того, что система у меня обновлялась с 10.6 и библиотека была собрана и установлена ещё на старой системе.

В этот же раз после сборки и установки, при попытке импортировать MySQLdb выпадала такая ошибка:

>>> import MySQLdb
/Library/Python/2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.7-intel.egg/_mysql.py:3: UserWarning: Module _mysql was already imported from /Library/Python/2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.7-intel.egg/_mysql.pyc, but /Users/jhaddad/Downloads/MySQL-python-1.2.3 is being added to sys.path
Traceback (most recent call last):
File ““, line 1, in
File “MySQLdb/__init__.py”, line 19, in
import _mysql
File “build/bdist.macosx-10.7-intel/egg/_mysql.py”, line 7, in
File “build/bdist.macosx-10.7-intel/egg/_mysql.py”, line 6, in __bootstrap__
ImportError: dlopen(/var/root/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.7-intel.egg-tmp/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib
Referenced from: /var/root/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.7-intel.egg-tmp/_mysql.so
Reason: image not found

Оказалось, что победить её очень просто. Достаточно только сделать символьную ссылку на файл `libmysqlclient.18.dylib`, который система не может найти самостоятельно:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

После этого нехитрого действия все отлично работает.

Установка MySQLdb под Snow Leopard

После того, как я поменял в своём ноутбуке жёсткий диск на SSD, я решил переставить систему с нуля. Сделал я это хотя бы потому, что старый диск был почти в два раза больше, чем новый, да и просто для того, чтобы избавиться от «истрического наследия».

После установки системы и переноса всех необходимых файлов я занялся установкой всего того, что простым копированием перенести нельзя. Например, я установил свежую версию интерпретатора Python 2.7 и новый Xcode 4.

Затем мне понадобилась база данных MySQL и связка (MySQLdb) для Python с ней. Опишу установку всей этой кухни, тут есть неочевидные моменты:

* [Скачивать](http://dev.mysql.com/downloads/mysql/5.1.html#macosx-dmg) и устанавливать нужно только 64-х битную версию MySQL.
* Устанавливать MySQLdb с помощью easy_install или чего-то подобного смысле не имеет, т.к. будет вываливаться такая ошибка:

    Traceback (most recent call last):
      File "", line 1, in 
      File "build/bdist.macosx-10.6-intel/egg/MySQLdb/__init__.py", line 19, in 
      File "build/bdist.macosx-10.6-intel/egg/_mysql.py", line 7, in 
      File "build/bdist.macosx-10.6-intel/egg/_mysql.py", line 6, in __bootstrap__
    ImportError: dlopen(/Users/bm/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.egg-tmp/_mysql.so, 2): no suitable image found.  Did find:
    	/Users/bm/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.egg-tmp/_mysql.so: mach-o, but wrong architecture

* Нужно [скачать](http://sourceforge.net/projects/mysql-python/) последнюю версию mysqldb
* Дальше немного терминальной магии:

tar xzf MySQL-python-1.2.3c1.tar.gz
cd MySQL-python-1.2.3c1
ARCHFLAGS=’-arch x86_64′ python setup.py build
ARCHFLAGS=’-arch x86_64′ python setup.py install

После этого всё работает правильно.