【Python】MySQLdbモジュールの導入
最近はSlackからデータベースを色々操作している.
普段はSQLiteを利用しているが,phpmyadminで管理するほうが見やすいだろうということで,MySQLと連携させてみることにした.
$ sudo pip install MySQLdb
は普通に通ったのだが,いざPythonのコードを実行しようとすると以下のエラーが出る.シンボリックリンクが貼られていないっぽい.
ImportError: dlopen(/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.11-intel.egg/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib
そこで,
$ sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
と実行してみたのだが,下のエラーが出る.
ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted
なんだこれは.
OSがEl Capitanになってると出るらしい.root権限を持つユーザでもusrなどのフォルダにはアクセス制限がかかるとかなんとか.
一旦リカバリーモードで入って制限を解除する必要があるので上のメニューからMacを再起動.
⌘+Rを押したままにして,画面にAppleのロゴが表示されたら離す.
リカバリーモードに入ったら,上部メニューのユーティリティからTerminalを選択する.ぼくは普段の設定で黒背景にしてるのですがこの時は白でした.
$ csrutil disable
を実行すると,以下のようなメッセージが出る.
Successfully disabled System Integrity Protection. Please restart the machine for the changes to take effect.
きた.成功したっぽいので再起動.
Terminalを起動して,
$ sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
を再度実行.パスワードを求められるので入力.
$ python -c "import MySQLdb"
と実行しても,何もエラーが吐かれていないことがわかる.