64bit Macでmysql-pythonを使おうとするとハマる

前からどーしても治らずに困ってたエラーが解決できたのでメモ。

ちなみに環境はこんな感じ。

  • MacOS 10.8.3
  • MySQL 5.1.63(Oracleが配布しているdmgからインストール)

症状

pip install mysql-python して、import MySQLdb しようとするとエラーに。

>>> import MySQLdb
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "MySQLdb/__init__.py", line 19, in <module>
    import _mysql
ImportError: dlopen(/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-x86_64.egg/_mysql.so, 2): no suitable image found.  Did find:
    /usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-x86_64.egg/_mysql.so: mach-o, but wrong architecture

解決法

同じ症状の人が結構いて、stackoverflowでもいくつか質問が上がっていたのですがどれも解決に繋がらず。

Python mysqldb: Library not loaded: libmysqlclient.18.dylib - Stack Overflow

結果的に以下の方法を試したら解決できました。

MySQL-pythonのインストールに成功してました。: 通りすぎていく....

手順としては、

  1. mysql-pythonのソースをダウンロード
  2. site.cfgに以下を追加
mysql_config = /usr/local/mysql/bin/mysql_config

このたった1行で解決。あとはビルドしてインストールすればMySQLdbが使えるようになりました。