MySQLdb(MySQLへのPythonデータアクセスライブラリ)をMac OS Xにインストールする方法


99

私はPythonの初心者ですが、MySQLdbを適切に機能させる方法を検討するのに1日を費やしました。Googleによるユニバースには、PITAとは何かに関する多数の参照と、非常に多くのガイドが含まれているようです時代遅れ。このサイトはこれらの種類の問題に対処することを目的としており、将来的にソリューションへの参照が必要になることを知っているので、質問をし、私の答えを提供し、他に何が浮かんでいるかを確認します表面。

では問題は、MySQLdbをMac OS Xで動作させる方法ですか?

回答:


133

python3を使用して、これらの更新: あなたは簡単に使用することができconda install mysqlclient、それが現在存在しているとしてのMySQLdbを使用するために必要なライブラリをインストールします。次のSOの質問は役立つヒントでした:Python 3 ImportError: 'ConfigParser'という名前のモジュールはありません。mysqlclientをインストールすると、mysqlclient、mysql-connector、llvmdevがインストールされます(少なくとも、これらの3つのライブラリは私のマシンにインストールされています)。

これが、この問題に関する私のとりとめのない経験の物語です。あなたが問題のより良い経験を持っているなら、それを編集したり一般化したりしたいと思います...そのSO魔法のビットを適用します。

注:次の段落のコメントはSnow Leopardに適用されましたが、Lionには適用されません。64ビットMySQLを必要とするようです。

まず第一に、著者(まだ?)のMySQLdbのは言うここでは、最も悪質な問題の一つは、OS Xは、Pythonの32ビットバージョンでインストールされていますということですが、そのほとんどの平均ジョーズ(私自身を含め)は、おそらく64ビット版をインストールするジャンプMySQLの。悪い動き... 64ビットバージョンをインストールしている場合は削除し(この手間のかかるタスクの説明はSOでここにあります)、32ビットバージョンをダウンロードしてインストールします(ここでパッケージ)

MySQLdbライブラリをビルドおよびインストールする方法については、段階的な手順が多数あります。彼らはしばしば微妙な違いを持っ​​ています。 これは私にとって最も人気があるようで、実用的なソリューションを提供しました。以下のいくつかの編集でそれを再現しました

ステップ0: 始める前に、MySQL、Python、GCCがMacにインストールされていることを前提としています。

ステップ1: SourceForgeから 最新のMySQL for Pythonアダプターをダウンロードします。

ステップ2: ダウンロードしたパッケージを抽出します。

tar xzvf MySQL-python-1.2.2.tar.gz

手順3: フォルダー内で、パッケージをクリーンアップします。

sudo python setup.py clean

追加のステップのカップル(このコメントから)

ステップ3b: MySQL-python-1.2.2 / build / *ディレクトリの下のすべてを削除します-「python setup.py clean」を信頼して実行してはいけません

ステップ3c: Users / $ USER / .python-eggsで卵を削除します

ステップ4: 元々は_mysql.cの編集が必要でしたが、現在は不要です。MySQLdbコミュニティはこのバグを修正したようです。

ステップ5: mysqlと呼ばれるサブディレクトリを指すようにlibの下にシンボリックリンクを作成します。これは、コンパイル中に検索する場所です。

sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql

ステップ6: setup_posix.pyを編集して以下を変更します

mysql_config.path = "mysql_config"

mysql_config.path = "/ usr / local / mysql / bin / mysql_config"

ステップ7: 同じディレクトリで、パッケージを再構築します(パッケージに付随する警告は無視してください)

sudo python setup.py build

ステップ8: パッケージをインストールすれば完了です。

sudo python setup.py install

手順9:機能する かどうかをテストします。MySQLdbをインポートできれば機能します。

python

>>> import MySQLdb

ステップ10: インポートを試みたときにLibrary not loaded: libmysqlclient.18.dylib、次で終わるというエラーが表示された場合:Reason: image not found次のシンボリックリンクを1つ追加作成する必要があります。

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

その後import MySQLdb、エラーなしでできるはずです。

ただし、最後の1つの問題は、ビルドディレクトリからPythonを起動すると、次のエラーが発生することです。

/ライブラリ/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3:UserWarning:モジュール_mysqlはすでに/ライブラリ/Python/2.5/からインポートされていますsite-packages / MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg / _mysql.pyc、ただしXXXX / MySQL-python-1.2.3c1がsys.pathに追加されている

これはGoogleにとって非常に簡単ですが、トラブルを回避するために、ここで(または多分...特に将来性のあるURLではないかもしれませんが)cd ..ビルドし、ビルドディレクトリから外す必要があり、エラーがなくなるはずです。

冒頭に書いたように、この恐ろしい問題については他にも数多くの具体的な経験があるので、この回答が一般化されるのを見てみたいです。編集するか、独自のより良い答えを提供してください。


1
Appleが提供する10.6上のPython(Snow Leopard)は64ビット(32ビット/ 64ビットユニバーサル)の実行を好むことに注意してください。他にも落とし穴があります。しばらくの間、MySQL 5.1.xシリーズでは、mysqlによってパッケージ化されたOS X tarballに障害がありました(ユニバーサルであると主張されていましたが、そうではありませんでした)。PythonのデータベースアダプターであるMySQLdbには、独自の問題があります。これは、MacPortsを使用して、必要なすべてを自動的にビルドすることをお勧めする1つのケースです。何かがうまくいかないのはあまりにも簡単です。
Ned Deily、2009

他の誰かを助けるために、ここにこれを残しておきます。また、mysql_configを正しいパスに設定するために、site.cfgを変更する必要がありました。最初はパスがあったとは思わなかったので、デフォルトで/ opt / ...になりましたが、/ usr / local / mysql / ...を指す必要がありました
tchaymore

8
私も走らなければなりませんでした:sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
David Underhill

1
私もLionで実行していますが、これを機能させるには大きな問題がありました。私はこのすばらしいSOの質問と回答をようやく見つけ、100%追跡しました。上記のDavid Underhillとまったく同じように、追加するまで機能しませんでしたsudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib。これを実行すると、期待どおりにインポートされました...最終的に。ふhewww。似たような立場にある人たちのための単なるfyi。
ジョン

2
私はmysqlライブラリーを持っているが、正しくリンクされていないことがわかりました。Mac OS ElCapitanでは、/ usr / libへのリンクは許可されていません。したがって、これで十分です:sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
Maruthi

101

Mac OS X 10.8(Mountain Lion)、10.9(Mavericks)、10.10(Yosemite)、および10.11(El Capitan)のすばやく簡単な方法:

XCode、そのコマンドラインツール、Python、MySQLがインストールされていると思います。

  1. PIPをインストールします。

    sudo easy_install pip
  2. 〜/ .profileを編集します(Mac OS X 10.10では必要ない場合があります)

    nano ~/.profile

    次の2行をコピーして貼り付けます

    export PATH=/usr/local/mysql/bin:$PATH
    export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/

    保存して終了。あとがきは、次のコマンドを実行します。

    source  ~/.profile
  3. MySQLdbをインストールする

    sudo pip install MySQL-python

    すべてが正常に機能するかどうかをテストするには、

    python -c "import MySQLdb"

それは私にとって魅力のように働きました。お役に立てば幸いです。

見つからないライブラリーに関するエラーが発生した場合:ライブラリーがロードされていません:libmysqlclient.18.dylibその後、次のようにシンボリックリンクする必要があります/usr/lib

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib 

2
ありがとう、このソリューションはMac OSX 10.9でも機能します:-)
matsoftware 2014年

2
これは私にとってはうまくいきました(Yosemiteパブリックベータ; Mysql 5; Py2.7)が、sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib下からコマンドを実行する必要がありました。
Michael Scott Cuthbert

いい答えだ。私はすでに.bash_profileにDYLD_LIBRARY_PATHの他の定義があったので、これをこの方法で追加しましたexport DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/mysql/lib/
14年

1
これが10.10.4で機能することを確認しました。また、homebrewのmysqlを使用した場合、.profileの変更はこの作業を行うために必要でした。
Isotopp、2015

1
でMySQLをインストールした後brew install mysql、2番目の手順を実行する必要はありませんでした。
dav.garcia

36

Macports経由でmysqlとpythonをインストールするポーターはすべての困難な作業を行いました。

sudo port install py26-mysql 
sudo port install mysql5-server

必要なものをインストールする必要があります。(mysqlサーバーに関するコメントについては、スタックオーバーフローを参照してください)

mysqlに接続するだけでサーバーを実行する必要がない場合は、最初の行で十分です。

Macportsは現在(2013年初頭)、OSと実行可能なアーキテクチャの一般的な組み合わせのバイナリダウンロードを提供し、他の人(およびリクエストした場合)はソースからビルドします。

インストールする必要のある複雑なライブラリなどがある場合、一般にmacports(またはfink)が役立ちます。

Pythonのみのコードで、単純なCの依存関係をsetuptoolsなどで設定できる場合は、2つを組み合わせると複雑になります。


3
MacPortsは/ opt / localの下にインストールするため、MacPortsの使用を開始するときは、パスが/ usr / binよりも/ opt / local / binを優先することを確認してください。
Teemu Kurppa

4
はい!また、既存のMySQLサーバーに接続するだけの場合は、2行目をスキップします。残念ながら、依存関係の数が多いため、OS Xのmysqlでpythonを使用しようとするのは、パッケージマネージャーを自分でプレイするよりも、MacPortsに追加のpythonインスタンスをインストールさせる方が簡単なケースです。
Ned Deily、2009

:あなたは、非推奨の警告を取得している場合は追記として、以下のページが修正ありbugs.launchpad.net/python-mysqldb/+bug/341943
ジェイ・テイラー

4
参考までに、最初の行(少なくともpy27-mysql)を実行すると、結局mysql5がインストールされます。ソースをダウンロードしてコンパイルする。おそらくあなたが望むものではありません。Grr。
Ben Hardy

@BenHardy-それはあなたが望むものであり、まさに私が意味したものであるすべてがインストールされます-ライオンとSnow Leopardの実行可能ファイルはmacportsによって集中的にビルドされるため、ほとんどの場合ローカルコンパイルは行いません。
mmmmmm

15

pipをインストールします。

sudo easy_install pip

brewをインストールします。

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

mysqlをインストールします。

brew install mysql

MySQLdbをインストールする

sudo pip install MySQL-python

コンパイルに問題がある場合は、ここの回答の1つにあるように〜/ .profileファイルを編集してみてください。


ありがとう!これはSierra [OSX 10.12.6(16G29)]で動作しました。
ハラナッド

curl:(22)リクエストされたURLがエラーを返しました:404 Not Found
Thirupathi Thangavel

これを行いましたが、pip install mysqlclient代わりに。動作します!
jeremysprofile 2018年

13

手順9の完了時にエラーを受け取った後、次の手順を実行する必要がありました。

ImportError: dlopen(/Users/rick/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib

    sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

参照:ありがとう!http://ageekstory.blogspot.com/2011_04_01_archive.html



4

新しいライオンボックスを入手した後、この問題(再び!)

私が見つけた最良の解決策(まだ100%最適ではありませんが、機能しています):

あなたがすることができ、アップルからのXCode /開発ツールをダウンロードしてそれを得る-これは大きなダウンロードは-

...しかし、代わりに私はあなたが必要とするものを持っている(そしてXCodeを持っていない)このgithubをお勧めします:https//github.com/kennethreitz/osx-gcc-installer

ビルド済みのライオン用PKG https://github.com/downloads/kennethreitz/osx-gcc-installer/GCC-10.7-v2.pkgをダウンロードしました

  • MYSQLコミュニティの64ビットバージョンをダウンロードしたことを確認してください。(DMGインストールは簡単なルートです)http://dev.mysql.com/downloads/mysql/

  • パスを次のように設定します。

    エクスポートPATH = $ PATH:/ usr / local / mysql-XXXX

    エクスポートDYLD_LIBRARY_PATH = / usr / local / mysql / lib /

    ARCHFLAGS = '-arch x86_64'をエクスポートします。

ご了承ください:

上記のmysql-XXXXの1、XXXはダウンロードした特定のバージョンです。(おそらく/ usr / local / mysql /も機能します。これはおそらく同じもののエイリアスですが、私はあなたの設定を知っているふりはしません)

2 ARCHFLAGSを「-arch i386 -arch x86_64」に設定することを提案しているのを見ましたが、x86_64のみを指定する方がうまくいくようです。(私はこれのいくつかの理由を考えることができますが、それらは厳密には関連していません)。

  • 獣をインストールしてください!

    easy_install MySQL-python

  • 最後のステップ:

DYLD_LIBRARY_PATHを永続的に追加します!

あなたはそれをあなたのbash_profileなどに追加することができます。これは私にとって欠けていたステップでした。それがなければ、私のシステムは_mysql.soなどの検索でさまざまなエラーを要求し続けました。

エクスポートDYLD_LIBRARY_PATH = / usr / local / mysql / lib /

@ richard-boardman、ソフトリンクソリューションに気づきました。これは、実際に私のPATHソリューションと同じことをしている可能性があります...

最良のリファレンス:http : //activeintelligence.org/blog/archive/mysql-python-aka-mysqldb-on-osx-lion/


4

あなたはpure-pythonを使ってみることができますpymysql

sudo easy_install pymysql

(またはpip、インストールしている場合は使用します。)次に、import MySQLdbコードの前にこれを追加します。

try:
    import pymysql
    pymysql.install_as_MySQLdb()
except ImportError:
    pass

3

または単純な試み:

> sudo easy_install MySQL-python

以下のようなエラーが発生した場合:

EnvironmentError:mysql_configが見つかりません

、次にこれを実行します

> export PATH=$PATH:/usr/local/mysql/bin

0

64ビットのMySQLを使用している場合、mysql-pythonライブラリのビルド中にARCHFLAGSを使用してCPUアーキテクチャを指定すると、トリックが実行されます。

ARCHFLAGS='-arch x86_64' python setup.py build
ARCHFLAGS='-arch x86_64' python setup.py install

0
export PATH=$PATH:/usr/local/mysql/bin/

システムがmysql_configファイルを見つけることができないため、問題が修正されるはずです。


0

macos Sierraでは、Pythonがanacondaによって管理されている私のためのこの作品:

anaconda search -t conda mysql-python

anaconda show CEFCA/mysql-python

conda install --channel https://conda.anaconda.org/CEFCA mysql-python

SQLAlchemyで使用する:

Python 2.7.13 | Continuum Analytics、Inc. | (デフォルト、2016年12月20日、23:05:08)[GCC 4.2.1互換Apple LLVM 6.0(clang-600.0.57)] darwinタイプ "help"、 "copyright"、 "credits"または "license"詳細情報。Anacondaは、Continuum Analyticsによって提供されます。チェックアウトしてください:http : //continuum.io/thanksおよびhttps://anaconda.org

>>> sqlalchemyインポートから*

>>> dbengine = create_engine( 'mysql:// ....')


0

この答えは、2019年11月頃のアップデートです。人気のあるpipインストールのいずれも、MacOS 10.13(および他のバージョンも同様)で動作する設定を提供しません。これは私が物事を働かせた簡単な方法です:

brew install mysql
pip install mysqlclient

brewのインストールについてヘルプが必要な場合は、次のサイトを参照してください:https : //brew.sh/


0

私はこの問題に遭遇し、mysqlclientopensslの場所を知る必要があることがわかりました。OSXはデフォルトでこれを隠しています。

opensslをbrew info opensslで見つけて、opensslbinへのパスをPATHに追加します。

export PATH="/usr/local/opt/openssl/bin:$PATH"

これを.zshrcまたは.bashrcに追加して、今後心配する必要がないようにすることをお勧めします。次に、その変数をエクスポートして(bashセッションを閉じて再び開く可能性があります)、さらに2つの環境変数を追加します。

# in terminal
export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"

次に、最後に実行します。

pipenv install mysqlclient

そしてそれはうまくインストールする必要があります。

ソース:https : //medium.com/@shandou/pipenv-install-mysqlclient-on-macosx-7c253b0112f2

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.