[Python] OSX 10.6でMySQLdbのインストールに手間取った話

表題の件ですが、何も考えずに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アプリケーションが動作すると言うことを初めて知りまして、解決まで時間がかかりました。まだまだ勉強がたりず泣けますね。精進します。

Leave a Reply

Your email address will not be published. Required fields are marked *