[Python] MySQLdb で ImportError が出た
2008年8月21日
PythonでMySQLと接続しようと
>>> import MySQLdb
とやったら、以下のようなエラーが出た
Traceback (most recent call last): File "<stdin>", line 1, in ? File "/usr/local/python-2.4.5/lib/python2.4/site-packages/MySQL_python-1.2.2-py2.4-linux-i686.egg/MySQLdb/__init__.py" , line 19, in ? import _mysql ImportError: libmysqlclient_r.so.15: cannot open shared object file: No such file or directory
つまりは、libmysqlclient_r.so.15 が無い、もしくはパスが通ってない、と。
まず、存否確認をすると
/usr/local/mysql/lib/mysql/libmysqlclient_r.so.15 下にあり、
ネットの記事と照合すると多分ここで合っている。
ので、パスが通ってないのが原因っぽい。
そういや思い当たる点があって、
Pythonインストール時もMySQL-pythonインストール時も
MySQLのパスを指定していなかった。
ほぼこれで間違いなかろう、スロー過ぎてアクビがでるぜっ!
・・・と、思ってたら、一向にそのオプションが見つからない。
なんでだあああっ!
結局、soundkitchen氏に聞いて
ライブラリへのパスが通ってないのが原因だとわかったので、
/etc/ld.so.conf.d/mysql.conf に /usr/local/mysql/lib/mysql を書いて
ldconfigで再起動したら動くようになりました。
毎度、ご迷惑をお掛けします。
ライブラリへのパスが通ってないのが原因だとわかったので、
/etc/ld.so.conf.d/mysql.conf に /usr/local/mysql/lib/mysql を書いて
ldconfigで再起動したら動くようになりました。
毎度、ご迷惑をお掛けします。
【勉強になったこと/反省点】
- Python側で取得するMySQLのパスは、
インストール時のMySQLdbインストール時に$PATHを見るらしい(未検証)。
PHPは本体インスコ時に指定するし、RubyもMySQLドライバインストール時に指定するから、
そういう風にやるもんだと思い込んでいた・・・。
なので、レンタルサーバとかで、
最初から入っているような、使う予定の無いMySQLに優先してパスが通っている状態でPythonをインストールしちゃうと、
そのまま全部ずれてしまうと思われる。 - 「ライブラリのパスならldconfigを調べろ」を毎晩10回唱えること。
君達のような若者がインストールしなくてもいい・・
そんな世の中を築きたいものだな・・・
そんな世の中を築きたいものだな・・・