私はPython初心者ですが、MySQLdbを適切に機能させる方法を1日費やしました。Googleによると、宇宙にはPITAとは何か、そして異常な数が含まれています。時代遅れのように見えるガイドの。このサイトはこれらの種類の問題に対処することを目的としており、将来的にソリューションへの参照が必要になることを知っているので、質問をして、答えを提供し、他に何が浮かぶかを見ていきます表面。
質問は、Mac OS Xで MySQLdb を取得する方法ですか?
Python3を使用している場合の更新:conda install mysqlclient
を使用するだけで、MySQLdbを現在の状態で使用するために必要なライブラリをインストールできます。次のSOの質問は有用な手がかりでした: Python 3 ImportError: 'ConfigParser'という名前のモジュールはありません 。 mysqlclientをインストールすると、mysqlclient、mysql-connector、およびllvmdevがインストールされます(少なくとも、これら3つのライブラリがマシンにインストールされました)。
ここに、この問題に関する私のとりとめのない経験の物語があります。問題の経験が豊富な場合は、編集または一般化してください... SO魔法を少し適用してください。
注:次の段落のコメントはSnow Leopardに適用されましたが、64ビットMySQLを必要とするLionには適用されません
まず最初に、MySQLdbの作者(まだ?)は ここ と言っています。最も厄介な問題の1つは、OS Xに32ビットバージョンのPythonがインストールされていることですが、 MySQLの64ビットバージョンをインストールするためにジャンプします。悪い動き... 64ビットバージョンをインストールしている場合は削除します(この厄介なタスクの手順はSO here で入手できます)。次に、32ビットバージョンをダウンロードしてインストールします(パッケージ ここ )
MySQLdbライブラリを構築してインストールする方法については、段階的な手順が数多くあります。多くの場合、微妙な違いがあります。 これ は私にとって最も人気があるように思われ、実用的なソリューションを提供しました。私は以下のいくつかの編集でそれを再現しました
ステップ0:始める前に、MySQL、Python、および GCC がMacにインストールされていると仮定します。
ステップ1:最新の MySQL for Python adapter をSourceForgeからダウンロードします。
ステップ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の下でEggを削除する
ステップ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
を作成する必要があります追加のシンボリックリンク:
Sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
これで、エラーなしでimport MySQLdb
できるようになります。
最後の問題は、ビルドディレクトリからPythonを起動すると、次のエラーが発生することです。
/Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.Egg/_mysql.py:3:UserWarning:モジュール_mysqlはすでに/Library/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にとって非常に簡単ですが、トラブルを軽減するために here (またはそうでないかもしれません...特に将来性のあるURLではありません)になり、cd ..
ビルドディレクトリがなくなると、エラーが消えます。
冒頭で書いたように、この恐ろしい問題には他にも多くの特定の経験があるので、この答えが一般化されるのを楽しみにしています。編集するか、独自のより良い答えを提供します。
Mac OS Xの迅速かつ簡単な方法10.8(Mountain Lion)、10.9(マーベリックス)、10.10(ヨセミテ)、および10.11(エルキャピタン):
XCode、その コマンドラインツール 、Python、MySQLがインストールされていると仮定します。
PIPをインストールします。
Sudo easy_install pip
〜/ .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
MySQLdbをインストールする
Sudo pip install MySQL-python
すべてが正常に動作するかどうかをテストするには、試してください
python -c "import MySQLdb"
それは私にとって魅力のように働いた。役に立てば幸いです。
見つからないライブラリに関するエラーが発生した場合:Library not loaded:libmysqlclient.18.dylibその後、次のように/usr/lib
にシンボリックリンクする必要があります。
Sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Macports を介してmysqlとpythonをインストールします。ポーターはすべての難しい作業を行いました。
Sudo port install py26-mysql
Sudo port install mysql5-server
必要なものをインストールする必要があります。 ( mysqlサーバーに関するコメントのスタックオーバーフロー を参照)
Mysqlに接続するだけでサーバーを実行する必要がない場合は、最初の行で十分です。
Macports now(2013年初頭)は、OSの一般的な組み合わせの実行可能アーキテクチャのバイナリダウンロードを提供し、他の(および要求した場合)ソースからビルドします。
一般的に、インストールが必要な複雑なライブラリなどがある場合、macports(またはfink)が役立ちます。
Pythonはコードのみで、setuptoolsなどを介して単純なC依存関係を設定できる場合、2つを混在させると複雑になり始めます。
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
コンパイルに問題がある場合は、こちらの回答のいずれかで〜/ .profileファイルを編集してみてください。
手順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
MacにMySQL-pythonをインストールする で述べたように:
pip uninstall MySQL-python
brew install mysql
pip install MySQL-python
次にテストします:
python -c "import MySQLdb"
新しいライオンボックスを入手した後、この問題が再び発生しました。
私が見つけた最良の解決策(まだ100%最適ではありませんが、機能しています):
64ビットpythonがあることを確認してください。 ライブラリがMac OS Xでビルドされた32ビット/ 64ビットであるかどうかを確認する方法?
easy_installがない場合はインストールしてください。 http://packages.python.org/distribute/easy_install.html
gCCがない場合はインストールします。
youcanAppleからXCode/Dev Toolsをダウンロードすることで取得できます-これは大きなダウンロードです-
...しかし、代わりに私はあなたが必要なものを持っている(そして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/
次のようにパスを設定します。
export PATH = $ PATH:/ usr/local/mysql-XXXX
export DYLD_LIBRARY_PATH =/usr/local/mysql/lib /
export 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などを見つけるためのさまざまなエラーを主張し続けました。
export DYLD_LIBRARY_PATH =/usr/local/mysql/lib /
@ richard-boardman、あなたのソフトリンクソリューションに気づきました。これは、実際に私のPATHソリューションと同じことをしているかもしれません...皆さん、あなたに最適なものは何でも。
ベストリファレンス: http://activeintelligence.org/blog/archive/mysql-python-aka-mysqldb-on-osx-lion/
Pure-python pymysql
を使用してみてください:
Sudo easy_install pymysql
(または、インストールされている場合はpip
を使用します。)次に、コードのimport MySQLdb
の前にこれを追加します。
try:
import pymysql
pymysql.install_as_MySQLdb()
except ImportError:
pass
または、単純な試行:
> Sudo easy_install MySQL-python
以下のようなエラーが発生する場合:
EnvironmentError:mysql_configが見つかりません
、それからこれを実行するだけです
> export PATH=$PATH:/usr/local/mysql/bin
64ビットMySQLを使用している場合、ARCHFLAGSを使用して、mysql-pythonライブラリの構築中にCPUアーキテクチャを指定すると、トリックが実行されます。
ARCHFLAGS='-Arch x86_64' python setup.py build
ARCHFLAGS='-Arch x86_64' python setup.py install
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)] on darwinタイプ「help」、「copyright」、「credits」または詳細については「ライセンス」。 AnacondaはContinuum Analyticsによって提供されます。チェックしてください: http://continuum.io/thanks および https://anaconda.org
>>> sqlalchemyインポートから*
>>> dbengine = create_engine( 'mysql:// ....')
export PATH=$PATH:/usr/local/mysql/bin/
システムはmysql_configファイルを見つけることができないため、問題を修正する必要があります。