MySQL 5.5.8(http://dev.mysql.com/downloads/mysql/)とMySQLdb pythonプラグインのインストール手順をダウンロードして従いました。 (http://sourceforge.net/projects/mysql-python/)Python import MySQLdbエラー - Mac 10.6
私はPythonの端末へのMySQLdbをインポートしようとすると、私は以下のエラーが表示されます。
Safira:~ yanigisawa$ python --version
Python 2.6.1
Safira:~ yanigisawa$ python -c "import MySQLdb"
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "build/bdist.macosx-10.6-universal/egg/MySQLdb/__init__.py", line 19, in <module>
File "build/bdist.macosx-10.6-universal/egg/_mysql.py", line 7, in <module>
File "build/bdist.macosx-10.6-universal/egg/_mysql.py", line 6, in __bootstrap__
ImportError: dlopen(/Users/yanigisawa/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so, 2): Library not loaded: libmysqlclient.16.dylib
Referenced from: /Users/yanigisawa/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so
Reason: image not found
Safira:~ yanigisawa$
私は、スタックオーバーフロー上の質問4559699を見つけ、そこの指示に従っ:
Safira:~ yanigisawa$ echo $DYLD_LIBRARY_PATH
/usr/local/mysql/lib
Safira:~ yanigisawa$ ls -l /usr/local/mysql/lib
total 363224
-rwxr-xr-x 1 root wheel 3787328 Jan 18 19:41 libmysqlclient.16.dylib
-rw-r--r-- 1 root wheel 10035336 Dec 3 13:26 libmysqlclient.a
lrwxr-xr-x 1 root wheel 23 Jan 14 22:01 libmysqlclient.dylib -> libmysqlclient.16.dylib
lrwxr-xr-x 1 root wheel 20 Jan 14 22:01 libmysqlclient_r.16.dylib -> libmysqlclient.dylib
lrwxr-xr-x 1 root wheel 16 Jan 14 22:01 libmysqlclient_r.a -> libmysqlclient.a
lrwxr-xr-x 1 root wheel 20 Jan 14 22:01 libmysqlclient_r.dylib -> libmysqlclient.dylib
-rw-r--r-- 1 root wheel 88033760 Dec 3 13:22 libmysqld-debug.a
-rw-r--r-- 1 root wheel 84075304 Dec 3 13:26 libmysqld.a
-rw-r--r-- 1 root wheel 8472 Dec 3 13:26 libmysqlservices.a
drwxr-xr-x 13 root wheel 442 Dec 3 13:53 plugin
Safira:~ yanigisawa$ md5 /usr/local/mysql/lib/libmysqlclient.16.dylib
MD5 (/usr/local/mysql/lib/libmysqlclient.16.dylib) = b8a78a93183720021b9dbe9ddad57111
Safira:~ yanigisawa$
そして、すべてのpython eggファイルを消去して再構築した後、私はまだ同じエラーが出ます。それから、MySQL 5.5.8でMac 10.6に影響するバグ59006(http://bugs.mysql.com/bug.php?id=59006)が見つかりました。私はそこにリストされた回避策を試し、卵をきれいにして再構築しましたが、私はまだこのエラーを受けています。
pythonに固有のこの問題の別の回避策がありますか?私は何か他のものを逃している?
EDIT:コマンドotoolコマンドからの出力を追加:あなたは正確に何をライブラリパスにMySQLdb
C拡張を見つけるためにコマンドotoolを実行してみてください可能性が
Safira:~ yanigisawa$ otool -L /Users/yanigisawa/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so
/Users/yanigisawa/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so:
libmysqlclient.16.dylib (compatibility version 16.0.0, current version 16.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)
Safira:~ yanigisawa$ otool -DX /usr/local/mysql/lib/libmysqlclient.16.dylib
/usr/local/mysql/lib/libmysqlclient.16.dylib
Safira:~ yanigisawa$
私はまだMac OSの新人です。 (今のところ約2ヶ月)私は話すために「火災による試験」を受けることを望んでいました。しかし、私はこの作業を得ることができない場合は、私は、MACポートオプションを使用することに頼るでしょう。提案していただきありがとうございます。 – yanigisawa
最終的にMacPortsソリューションが機能しました。私の2.6.1インストール側にpython 2.6.6をインストールし、/ usr/bin/pythonは2.6.1を指していたので、上記のエラーがapache cgiスクリプトで発生していました。 2.6.6バージョンへのシンボリックリンクを追加しなければならず、すべてが正常に動作するようになりました。ありがとう。 – yanigisawa
嬉しいです。しかし、一般的には、 '/ usr/local'以外のものを上書きすることは非常に悪い考えです。それはすべてOS Xの一部としてAppleによって管理されている。あなたがあなたが '/ usr/bin/python'を上書きすることを意味するかどうかは分かりません。複数のバージョンを扱うより良い方法は、 '$ PATH'の前に'/opt/local/Library/Frameworks/Python.framework/Versions/2.6/bin'を置くようにシェルの起動ファイルを変更するか、参照時に絶対参照を使うことですPythonには、 '/opt/local/bin/python2.6 'があります。 –