4

したがって、これが新しいトピックではないことはわかっていますが、少なくとも Python 2.6 / Snow Leopard では、誰も解決できなかったようです。(私が見つけた Leopard の修正は、Snow Leopard には適用できません。)

状況: Django を Mac OS X Snow Leopard ラップトップにローカルにインストールしようとしています。(10.6.7) Snow Leopard、MySQL-python 1.2.3、および MAMP 1.9.6 にプリインストールされている Python 2.6.1 があります。すべて最新の現行バージョンです。

MySQLdb パッケージに変更を加えずに実行するpython setup.py buildと、数百以上のエラーが発生します。その最初のエラーは次のとおりです。

$ python setup.py build
running build
running build_py
copying MySQLdb/release.py -> build/lib.macosx-10.6-universal-2.6/MySQLdb
running build_ext
building '_mysql' extension
creating build/temp.macosx-10.6-universal-2.6
gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch ppc -arch x86_64 -pipe -Dversion_info=(1,2,3,'final',0) -D__version__=1.2.3 -I/Applications/MAMP/Library/include -I/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c _mysql.c -o build/temp.macosx-10.6-universal-2.6/_mysql.o -fno-omit-frame-pointer -g
_mysql.c:36:23: error: my_config.h: No such file or directory
_mysql.c:38:19: error: mysql.h: No such file or directory
_mysql.c:39:26: error: mysqld_error.h: No such file or directory
_mysql.c:40:20: error: errmsg.h: No such file or directory
_mysql.c:76: error: expected specifier-qualifier-list before 'MYSQL'
_mysql.c:90: error: expected specifier-qualifier-list before 'MYSQL_RES'

そして次で終わる:

_mysql.c:2422: error: initializer element is not constant
_mysql.c:2422: error: (near initialization for '_mysql_ResultObject_memberlist[0].offset')
_mysql.c: In function '_mysql_ConnectionObject_getattr':
_mysql.c:2444: error: '_mysql_ConnectionObject' has no member named 'open'
lipo: can't open input file: /var/folders/Br/Br8Yhf-IGVCaGfXw4TYRc++++TI/-Tmp-//ccFnIslh.out (No such file or directory)
error: command 'gcc-4.2' failed with exit status 1

そこでsite.cfg、mysql_config の場所でファイルを更新しました。

# The path to mysql_config.
# Only use this if mysql_config is not on your PATH, or you have some weird
# setup that requires it.
mysql_config = /Applications/MAMP/Library/bin/mysql_config

それでも同じエラーです。過去 2 日間トラブルシューティングに費やしたので、他にもたくさんのことを行いました ( ez_setup.egg ファイルのダウンロード、コード内のいくつかのオプションの手動変更など)。だから私はあなたをすべての詳細で退屈させません。一般的に、私が見逃している明らかな何かがあるかもしれません。(うまくいけば)。Python と MySQL はどちらも正常に動作するため、MAMP を使用せずに MySQL を再インストールすることを避けようとしていました。しかし、それが必要であると信じる理由があれば、私は試してみます。

どんな助けでも大歓迎です!ありがとう。

4

1 に答える 1

2

期待通りに動作させることができました。

いくつかのこと:

まず第一にlipo: can't open input file、以前のコンパイルの失敗を示します。セットアップ スクリプトは実際には失敗し、以前のエラーが表示されるはずです。なぜそうでないのかわかりません。

次に、MySQLdb はすべての構成情報を から取得しmysql_configます。たとえば、実行するmysql_config --cflagsと C コンパイラ フラグが与えられます。私の場合、それは-I/usr/local/Cellar/mysql/5.5.12/include -g. そこにフラグがない場合-arch、間違ったアーキテクチャがターゲットになります。また、リンク アーキテクチャ (このセットアップ ファイル内) も同様に派生しmysql_config --cflagsているため、リンクは間違ったアーキテクチャをターゲットにします。

を使用してアーキテクチャを明示的に設定すると、ARCHFLAGSうまくいきます。次のスクリプトは、使用している MySQL および python ビルドが、 によって返されるマシン アーキテクチャと一致することを前提としていますuname -m。そうでない場合は、明示的に指定してください。

[user]$ sudo su
[root]$ export ARCHFLAGS="-arch $(uname -m)" # or '-arch i386' or '-arch x86_64'
[root]$ pip install mysql-python
于 2011-07-28T00:16:31.410 に答える