Macbook (OS X 10.5)にMySQL + Pythonの環境を構築する

Django用に環境を作ろうと思ったら、すごくハマったのでメモ。
方針としてはなるべく簡単にインストーラが使えればベストな方向で構築。

MySQL Serverのインストール

パッケージをダウンロードしてインストールします。
http://dev.mysql.com/downloads/mysql/5.1.html#macosx-dmg
今回はMySQL Community Serverの5.1をインストールしましたが、ポイントは64bitをインストールしない事です。インストールは可能ですが、これはPython側が32bitなために実行時(import時)にエラーとなりはまるので注意してください。

ダウンロードしたならばマウントし、
mysql-5.1.36-osx10.5-x86.pkg
MySQLStartupItem.pkg
の順にインストーラに従ってインストールします。

尚、MySQLのインストール先は、/usr/local/mysql/ になります。

サーバの起動など

サーバの起動などはMySQLStartupItemをインストールしていれば、システム環境設定から可能です。

MySQL GUIツールのインストール

自分はコマンドラインでごにょごにょやるのはあまり好きではないので、GUIツールもインストールします。
http://dev.mysql.com/downloads/gui-tools/5.0.html
こちらは特にはまる箇所はありません。インストールが完了したならば、アプリケーションに登録されます。

Python-MySQLのインストール

MySQLdb (Python-MySQL)は、幾つかの方法でインストールできるようですが、インストールが失敗したり、色々と設定を変更したりと、一発で奇麗にインストールはできないようです。その中でも比較的に解りやすい方法を探してみました。

MySQLdbを、http://sourceforge.net/projects/mysql-python/よりダウンロードして、適当なディレクトリで解凍します。

tar -xvf MySQL-python-1.2.3c1.tar.gz

このままでは設定ファイル(mysql_config)の位置が異なりビルドに失敗するため、site.cfgを編集して以下の行を追加します。

mysql_config = /usr/local/mysql/bin/mysql_config

※尚、念のため、MySQLのインストール先は確認してください。
後は、ビルドしてインストールします。

python setup.py build
sudo python setup.py install

最後にPythonでimport して、エラーが起きなければ成功です。

Python 2.5.1 (r251:54863, Feb 6 2009, 19:02:12)
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
>>>

import でエラーが発生する

>>> import MySQLdb
Traceback (most recent call last):
File "", line 1, in
File "build/bdist.macosx-10.5-i386/egg/MySQLdb/__init__.py", line 19, in
File "build/bdist.macosx-10.5-i386/egg/_mysql.py", line 7, in
File "build/bdist.macosx-10.5-i386/egg/_mysql.py", line 6, in __bootstrap__
ImportError: dynamic module does not define init function (init_mysql)

こんなエラーが発生した場合、おそらくは64bit版がインストールされています。
/usr/local/mysql/を削除の上、再度32bit版をインストールし、MySQLdbも再構築してください。

port でインストールする

port でインストールする事もできますが、パスが通らないためリンクを張るなどの回避策が必要です。ただ、インストール手順なども不透明ですし、無駄にportからもmysql5がインストールされてしまうため、行わない方がいいかもしれません。

こんな方法も

こちらにもインストール手順がありますが、どうしてインストールが成功するのか不明な為、自分は試しませんでした。