表題の件ですが、何も考えずにeasy_install MySQL-pythonとすると、インストールは成功するものの、importしようとすると以下のようなエラーが出て使用できませんでした。
ImportError: dlopen(/path/to/_mysql.so, 2): no suitable image found. Did find: /path/to/_mysql.so: mach-o, but wrong architecture
Terminalからmysqlコマンドを叩くと普通に動作していましたが、エラーメッセージ的にはarchitectureが間違っているよと言っているようです。そこでMySQLdbのソースコードをarchitectureを指定してコンパイルしてみたのですが、やはり同様のエラーが出て解決できませんでした。
さらに調べてみると、Pythonの動作モードを32bitにしてMySQLdbをインストールすると良いよ、と書かれている記事を見つけまして、「え、Pythonって64bitで動いてんの」と思いながらも、その通りにしてみると動きました。Pythonを32bitモードで動かすにはdefaultsを使用します。
$ defaults write com.apple.versioner.python Prefer-32-Bit -bool yes $ easy_install MySQL-python # こうすると動く
結論としてはSnowLeopardに元々インストールされているPythonは64bitモードで動いていて、そこに32bitのMySQLをインストールしていたのが問題だったので、僕は64bit版のMySQLをインストールしなおす事にしました。手元では問題なく動作しています。前述の方法だとせっかく64bitで動いているPythonがもったいないですよね。なお、動作中のプログラムが32bitモードで動いているのか64bitモードで動いているのかは、Activity Monitorで確認できます。
恥ずかしながら手元のSnowLeopardで64bitアプリケーションが動作すると言うことを初めて知りまして、解決まで時間がかかりました。まだまだ勉強がたりず泣けますね。精進します。
関連する記事
タグ: mysql, python, snow leopard

