MySQLをインストールし、Python Homebrew with OS X 10.10.5 Yosemiteをインストールしました。MyPython 2.7はpython -> ../Cellar/python/2.7.9/bin/python
にあり、シンボリックリンクが/usr/local/bin/python
にあります。
/usr/local/bin
にはシンボリックリンクがあります:mysql -> ../Cellar/mysql/5.7.9/bin/mysql
Pythonシェルで:
>>> import MySQLdb
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/site-packages/MySQLdb/__init__.py", line 19, in <module>
import _mysql
ImportError: dlopen(/usr/local/lib/python2.7/site-packages/_mysql.so, 2): Library not loaded: /usr/local/lib/libmysqlclient.18.dylib
Referenced from: /usr/local/lib/python2.7/site-packages/_mysql.so
Reason: image not found
だから私は試しました:$ Sudo unlink /usr/local/lib/libmysqlclient.18.dylib
に続く:DYLD_LIBRARY_PATH=/usr/local/mysql/lib/:$DYLD_LIBRARY_PATH
そして(理由による必死):$ export DYLD_LIBRARY_PATH=/usr/local/Cellar/mysql/5.7.9/lib
ただし、どちらの場合もimport MySQLdb
はlibmysqlclient.18.dylib
をインポートしようとしました。
それから私は試しました:$ pip install -U MySQL-python
および得た:Requirement already up-to-date: MySQL-python in /usr/local/lib/python2.7/site-packages
多くの answersto thisproblemon SO は、バージョン番号(私のケースlibmysqlclient.20.dylib
)。ただし、既存のシンボリックリンクを考えると、これは大まかなものであり、将来を保証するものではありません。
/usr/local/lib
にはlibmysqlclient.dylib -> ../Cellar/mysql/5.7.9/lib/libmysqlclient.dylib
そして、/usr/local/Cellar/mysql/5.7.9/lib
には以下が見つかります:libmysqlclient.20.dylib
それと同じディレクトリにシンボリックリンクがある:libmysqlclient.dylib -> libmysqlclient.20.dylib
libmysqlclient.18.dylib
の作り方?では、手動でさらに別のシンボリックリンクを追加せずに、どのようにしてPython /usr/local/lib/libmysqlclient.18.dylib
を忘れて/usr/local/lib
からlibmysqlclient.dylib
の正しいシンボリックリンクをたどることができますか?
これは私の場合の私の問題を解決しました:
$ pip uninstall MySQL-python
$ pip install mysqlclient
MySQL-python
は非常に古いことが判明しました(最後のコミットは7年前でした)。 mysqlclient
は最新バージョンであり、多くの改善とバグ修正が行われています。
私もこの問題に遭遇しました。 MySQL-pythonをアンインストールしてからインストールしました。
pip uninstall MySQL-python
pip install MySQL-python
更新(コメントに基づく)
場合によっては、次の方法で2番目の(インストール)ステップを実行する必要があります。
pip install --no-binary MySQL-python MySQL-python
no-binary
オプションは、pipがそれを新しく構築し、正しいライブラリにリンクできるようにするためのものです。
--no-binary <format_control>
バイナリパッケージは使用しないでください。複数回指定でき、そのたびに既存の値に追加されます。 :all:を使用してすべてのバイナリパッケージを無効にするか、:none:を使用してセットを空にするか、1つ以上のパッケージ名の間にカンマを入れます。一部のパッケージはコンパイルが難しいため、このオプションを使用するとインストールに失敗する場合があります。
NB:MySQL-python
について言及する必要があることに注意してください twice 。上記のように、最初の出現はno-binary
オプションを適用するパッケージの名前で、2番目の出現はインストールするパッケージを指定します。
mysqlclient
の開発バージョンを使用する必要があります:
pip install git+https://github.com/PyMySQL/mysqlclient-python.git@master
Python 3.4で最新のPyPIバージョン(1.3.7)を入手する前は、libmysqlclient.18.dylib
(MySQL 5.6から)を検索していましたが、libmysqlclient.20.dylib
(from MySQL 5.7)。
Python 3を使用する場合、MySQL-python
はオプションではありません(およびmysqlclient
が新しいバージョンです)。
libmysqlclient.18.dylib
の不足に関する問題が発生した場合:
公式リンクからmysql 5.6をダウンロードします: https://dev.mysql.com/downloads/mysql/
インストールする
端末内-mdfind libmysqlclient | grep .18.
出力をコピーする
Sudo ln -s [the output from previous command] /usr/local/lib/libmysqlclient.18.dylib