ORIZUME - オリズメ

1207.Python, MySQL, MySQL-Pythonの環境をMac OS Xに作る時に起きたこと(OS X Mountain LionにMySQL-Pythonをインストール)

0

スクリーンをキャプチャしながら進めると時間とスクロールを要しますね。
なぜプログラミングの本があんなに厚いのか判った気がします。
分かりやすく記録しようとすると、どんどんスクリーン・キャプチャが増えていきます。
見てる方がまどろっこしい時もありそうですが。
忘れないように、ミスらないようにするには、文字より画像の方がいいので、ご容赦ください。
  
  
さて、前回の「OS X Mountain LionにMySQLをインストール」のつづきです。
実際には、すっごい遠回りしたのですが、それは後日に。
スムーズな最短ルート(Route)を先に記録します。

この時にも教訓が。
「迷った時の情報は、ルート(root)に答えを求めるべし」でした。
今回のインストールはターミナルで行うため、GUIに慣れ切った私など、エラーが起こるとそれだけで恐くなります。その手法をすぐに検索して探し、何となく見つかった答えで進めてしまいます。
これが、遠回りを誘います。大事なのは「作った人は、公式情報はなんて言っているの?」です。メンドウなようでも、公式のサイトや、制作者の声を、英語だろうが、回りくどかろうが読んだ上で、(私も含めて)他の人の親切なブログを見るべきです。
前回の道案内に例えれば、ちょっと道が細くなって不安になると、また道を聞いちゃいますよね。そこで「あ、この道の方が近いよ」と親切に教えてくれる人もありがたいのですが、その道は住み慣れた人にしか通りにくいような裏通りかもしれません。手元に地図があり、それを自分の意志で読み解けない時、地図をベースに人に訊けばミスは起きません。地図が手元にない場合は、公式の標識などをベースに話をすべきです。

今回もハマりました。
インストールすべきはMySQLにPythonからアクセスする時に使うドライバになる「MySQL-Python」。これを決めるまでにもPython公式サイトで「mysql」で検索しただけでこの状態です。
やりたいことは、iOSのデータベースとの連携もあるため、ひょっとすると便利なライブラリもあると思います。いろいろ調べるとキリがないほど情報が出てくる….ヤメました。判らなくて迷うだけなら、基本からやった方がいいです。急いでますけどね。すぐにでも仕上げなきゃいけない〆切もあるので。ですが、判らないまま進むと、またここに帰ってくることになります。

Python公式サイトのMySQLのリンクから…
PythonOfficeial_s

MySQL for Pythonというドライバを選びます。
MySQLforPython_s

ここですぐにダウンロードせずに、ちょっと情報を集めます。MySQL for Python Websiteで、インストール方法などを確認します。
MySQL-Python_s

一瞬、見た目で「大丈夫か?」と思いますよね。シンプル過ぎて。見た目が90%なのが判る瞬間ですが、技術者なのでこのあたりはシンプルなのでしょう。次で安心できます。
Developer Blogへ。

Blog_s

ちゃんと顔写真まで出てます。この方がMySQL-Pythonを作った人です。一気に親近感です。私はすぐにGoogle+でフォローしました。
2012年11月26日のコメントで、タイトルから「MySQLdbのインストールってジャマくさい?」と心配して、しっかりOS単位で解説してくれています。
私は、Mac OS Xなので、このあたり。
Blog2_s

Xcodeが要るよ、と書いてあります。また、MacPortsやHomebrewを使うと簡単、MacPortsしか試してないけど、簡単にできたよ、と。
読み進めていくと32-bitと64-bitの違いには注意しろ、
mysql_configをシェル(ターミナル)から確認してください、setup.pyに適切なPATHを教えるために、site.cfgをハック(修正)しなければいけないはずです、と書いてあります。これくらいの英語だと、私は日本語で略語で書かれるより英語の方が分かりやすかったです。

さらに、32-bitと64-bitのアーキテクチャの違いは、ここに最近のものがあると、とリンクがあります。
ここです。正確な道案内が書いてあるのは。

discussion_s

Ralphさんがインストールに困って、作者のAndyさんに問い合わせているディスカッションです。

この最初のRalphさんが引っかかったエラーが、よく世の中にも解説されているものです。日本語の解説は、おそらく情報が古いのか「そういう時はMySQLを32-bitをインストールして、Pythonの32-bitに合わせるべき」と書いてあります。
私は、その道案内を先に聞いてしまって、MySQLをアンインストールして、32-bitをインストールしようとしました。このアンインストールが途方もなくまた大変….その途中で、自分のMacは64-bitなのに、Pythonはホントに32-bitなのか?が疑問になりました。そしてたどり着いたのが、作者のこのページでした。

作者のAndyさん曰く「Pythonは(32-bitも64-bitも)どちらのアーキテクチャにも対応しています。(Ralphさんの使っている)OS 10.8.2とPython 2.7.2なら64-bitだろうから、全部を64-bitで統一できているか、確認してください」となってます。
その後、RalphさんはMySQLの64-bitをインストールし直して、MySQL-Pythonのインストールにも成功しています。

ここで、私は自分のMacを確認して….あ、64-bitでいいんだ(なんでアンインストールに手間取ってるんだ…)と気づきました。確認方法は、前回のアクティビティモニタの、これです。
Monitor_s

私は親切な日本語の解説より、作者の英語の解説を選びました。
相当苦労したアンインストールは、後日にまとめますが、MySQLを適切にインストールできている前提で、作者の言うとおりに進めます。

pip_s

「どうやってインストールしましたか?pipをお勧めしますよ。」
http://www.pip-installer.org/en/latest/

ということで、pipとやらに

pip2_s
「Python & OS Support」に進みます。

ここで、コマンドをターミナルからエントリーするのですが、特殊なコマンドがXcodeのアップデートで欠落している時があります。「そんなコマンドはない」とターミナルが言う時は、XcodeのPreferencesで「Command Line Tools」が「Installed」になっているかを確認してください。なっていない時はインストールしてください。
xcode_S

「Python & OS Support」の一番下、「get-pip」に書いてあるコマンドを、私はどちらもsudo付きで、
sudo curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py
sudo python get-pip.py
と実行しました。
getpip_s

簡単にインストールが完了します。
  
  
ようやくMySQL-Pythonのインストール。
pip install MySQL-python
をターミナルで実行します。
…と、ここで、障害が。ターミナルにインストール時にインストール時に参照するリンク先のディレクトリがないよ、と言い出しました。
[ここが、混乱していてスクリーンキャプチャがありません…申し訳ない。]
この状況は、なんとなく予測してました。
pipのEasy Installのtroubleshootingに書いてあります。
piptroubule_s

ターミナルの画面に、どのデータがnot foundかは、しっかり書いてあります。
おそらく、site.cfgというファイルに書かれているパスが原因になっていると思います。
このsite.cfgがあるディレクトリは、インストールにpipが使用しているディレクトリなので、おそらく個別に変わります。(ちなみに、私の時は、/private/var/folders/…..のような、今まで見たこともない奥深い場所でした。)
そのディレクトリを見つけて、site.cfgという場所を開きます。
[もし、ここで、とんでもなく深い場所で、それが通常のFinderでは見つけられない時は、ターミナルでこちらのコマンドを使えば見つかるかと思います。

site.cfgを見つけて、テキストエディットなどのエディタで開きます。
すると、
# The path to mysql_config.
# Only use this if mysql_config is not on your PATH, or you have some weird
# setup that requires it.
#mysql_config = /usr/local/bin/mysql_config
とコメントになっている部分がすぐに見つかります。Andyさんが書いていてくれたんでしょうかね。

これをMySQLのインストールされた場所に変更する必要があります。
Finderの「フォルダへ移動…(Command+Shift+G)」で、元々Andyさんが書いている付近に行ってみましょう。/usr/local/あたりです。

FinderPath
私の場合は、/usr/local/mysql/でした。

じゃあ、この下にちゃんとmysql_configがあるかな?…と確認。
Finder2_S
ある!ちゃんとある!

site.cfgのコメントになっている部分を、
#mysql_config = /usr/local/bin/mysql_config
から、
mysql_config = /usr/local/mysql/bin/mysql_config
(ちゃんと#外してくださいね)
に変更。

さて、もう一回MySQL-Pythonのインストール。
pip install MySQL-python
を実行します。
インストール完了です!
  
  
Pythonでインポートしてみますが、まだダイナミック・リンクを変えていないので、おそらくAndyさんの言うとおりエラーになるはず。
MySQL-Python2_s
これです。

ターミナルで
Python
と起動。
Import MySQLdb
とすると、

ImportError: dlopen(/path/to/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib

予定どおり、出ました。
ターミナルで、
cd /usr/lib
sudo ln -fs /usr/local/mysql/lib/libmysqlclient.18.dylib libmysqlclient.18.dylib
とリンクを変更。

これでもう一度….ターミナルで
Python
そして
Import MySQLdb

できた….
  
  
長文、読んでいただき、ありがとうございました。
まとめるのに数日かかりました。

書いたとおり、ここに来るまでに無駄な「MySQLのアンインストール」をしていて、これがとんでもなく大変なことになりまして….今後のために、こちらもまたまとめます。
  
  
ようやく、作業に入れるか…とのことで読破した教本。
まだPython3ではないのですが….
{{insert_meta NewsAmazon}}

Comments are closed.