/var/log

技術系のあれこれ。※内容は個人の発言であり、所属する組織を代表するものではありません。

あれれ?EclipseでPython使うとMySQLにアクセスできないぞ...

という問題が発生しました.

といっても原因は本当にしょぼいものでした.


とりあえず今回の環境です.


これで以下のような簡単なコードを実行するとエラーになるんですよねー
(termからpythonインタラクティブモード実行すると問題なく動く事は確認しました)

#!/usr/bin/python                                                                                                                                     
# -*- coding: utf-8 -*-                                                                                                                               

import MySQLdb, codecs

# DB に接続                                                                                                                                           
db = MySQLdb.connect(user="xxxxxxxx", passwd="xxxxxxx", db="XXXXXXXXXXXXXXXX", charset="utf8")
# カーソルの取得                                                                                                                                      
c = db.cursor()


# SELECT                                                                                                                                              
c.execute("SELECT * FROM xxxxxxxxxxxxxxxxx")
# 最初から 10 件を表示                                                                                                                                
it = iter(c)
for i in range(0,10):
    for col in it.next():
        print col,
    print

これを実行するとEclipseのコンソールに以下のエラーメッセージが...

Traceback (most recent call last):
  File "/Users/aceax00/workspace/kids2010/src/analysis.py", line 9, in <module>
    import MySQLdb, codecs
  File "/Library/Python/2.7/site-packages/MySQLdb/__init__.py", line 19, in <module>
    import _mysql
ImportError: dlopen(/Library/Python/2.7/site-packages/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /Library/Python/2.7/site-packages/_mysql.so
  Reason: image not found


なんでかな?と思ってググってみると割とよくある現象のようです(^^;
まぁdylibの場所が分からないと怒られてるので,環境変数の問題だろうと思ってみると...

$ echo $DYLD_LIBRARY_PATH
/usr/local/mysql/lib/


いつのまにこんな変数が定義されていたんだ...と思いつつ.
こんな感じで環境変数Eclipseに設定し直しました.


これで問題なく動くようです.