2

特にMySQLdbモジュール(MySQL-python-1.2.3c1)をインストールして、MAMPスタックのMySQLに接続するのが困難です。mysqlインクルードディレクトリとライブラリ(プラグインを含む)をmysqlの新規インストール(バージョン5.1.47)からMAMP内のインストール(バージョン5.1.37)にコピーするなど、さまざまなことを行いました。

これで、MySQLdbモジュールのビルドとインストールでエラーが発生しなくなりました。

このエラーは、Pythonシェル(バージョン2.6)から「importMySQLdb」を呼び出しているときに発生します。

Traceback (most recent call last):
  File "<stdin>", 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/rhenru/.python-eggs/MySQL_python-1.2.3c1-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so, 2): Symbol not found: _mysql_affected_rows
  Referenced from: /Users/rhenru/.python-eggs/MySQL_python-1.2.3c1-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so
  Expected in: flat namespace
 in /Users/rhenru/.python-eggs/MySQL_python-1.2.3c1-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so

任意のアイデア、それを機能させるために他に何をする必要がありますか?

たくさんありがとう、ロバート

=========以下のHankGayが提案するように、virtualenvを使用した後のシステム応答を追加してください...

(MyDjangoProject)MyMacPro:MyDjangoProject rhenru$ which python
/Users/rhenru/Workspace/django/MyDjangoProject/bin/python

virtualenvでpythonを実行した後、MySQLdbをインポートします。

>>> import MySQLdb
Traceback (most recent call last):
  File "<stdin>", 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/rhenru/.python-eggs/MySQL_python-1.2.3c1-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so, 2): Symbol not found: _mysql_affected_rows
  Referenced from: /Users/rhenru/.python-eggs/MySQL_python-1.2.3c1-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so
  Expected in: flat namespace
 in /Users/rhenru/.python-eggs/MySQL_python-1.2.3c1-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so

sysとsys.pathをインポートします

>>> import sys
>>> print sys.path
['', '/Users/rhenru/Workspace/django/MyDjangoProject/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg', '/Users/rhenru/Workspace/django/MyDjangoProject/lib/python2.6/site-packages/pip-0.7.1-py2.6.egg', '/Users/rhenru/Workspace/django/MyDjangoProject/lib/python26.zip', '/Library/Python/2.6/site-packages/PyXML-0.8.4-py2.6-macosx-10.6-universal.egg', '/Library/Python/2.6/site-packages/pydot-1.0.2-py2.6.egg', '/Library/Python/2.6/site-packages/pyparsing-1.5.2-py2.6.egg', '/Library/Python/2.6/site-packages/vobject-0.8.1c-py2.6.egg', '/Library/Python/2.6/site-packages/pytz-2010h-py2.6.egg', '/Library/Python/2.6/site-packages/MySQL_python-1.2.3c1-py2.6-macosx-10.6-universal.egg', '/Library/Python/2.6/site-packages/distribute-0.6.12-py2.6.egg', '/Library/Python/2.6/site-packages/pip-0.7.1-py2.6.egg', '/Users/rhenru/Workspace/django/MyDjangoProject/lib/python2.6', '/Users/rhenru/Workspace/django/MyDjangoProject/lib/python2.6/plat-darwin', '/Users/rhenru/Workspace/django/MyDjangoProject/lib/python2.6/plat-mac', '/Users/rhenru/Workspace/django/MyDjangoProject/lib/python2.6/plat-mac/lib-scriptpackages', '/Users/rhenru/Workspace/django/MyDjangoProject/Extras/lib/python', '/Users/rhenru/Workspace/django/MyDjangoProject/lib/python2.6/lib-tk', '/Users/rhenru/Workspace/django/MyDjangoProject/lib/python2.6/lib-old', '/Users/rhenru/Workspace/django/MyDjangoProject/lib/python2.6/lib-dynload', '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6', '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-darwin', '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk', '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac', '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac/lib-scriptpackages', '/Users/rhenru/Workspace/django/MyDjangoProject/lib/python2.6/site-packages', '/Library/Python/2.6/site-packages', '/Library/Python/2.6/site-packages/PIL', '/Library/Python/2.6/site-packages/setuptools-0.6c11-py2.6.egg-info', '/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python', '/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/PyObjC', '/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/wx-2.8-mac-unicode']
4

2 に答える 2

1

MySQL-Pythonをどのようにインストールしていますか? 新しい virtualenv でテストしたところ、うまくいったpip install mysql-pythonようです。

アップデート:

pipは、Python パッケージのパッケージ マネージャーのようなものです。

デフォルトでは、 は現在のディレクトリにpipインストールされます。これにより、他のライブラリ/アプリケーション (Django など) がアクセスできるようになります。また、アプリケーションをサンドボックス化できる気の利いたライブラリである (Ian Bicking が両方とも書いたはずです)でもうまく機能します。これは、グローバルディレクトリを汚染する (または書き込みアクセスを必要としない) ことなく、新しいことを試すことができることを意味するため、便利です。site-packages$PYTHONPATHpipvirtualenvsite-packages

おそらく今はヤクの毛を剃っているように思えるかもしれませんが、 と について理解を深める努力をする価値はあると思いpipますvirtualenv( も調べたいと思うかもしれませんがvirtualenvwrapper、今はスキップしますvirtualenv。すべてを global に配置するよりもデプロイ シナリオが少し複雑にsite-packagesなりますが、開発に関してはそれほど難しくありませんvirtualenv

次のようなものをお勧めします。

  1. curl -0 http://python-distribute.org/distribute_setup.py
  2. python distribute_setup.py
  3. easy_install pip
  4. pip install virtualenv
  5. virtualenv --distribute MyDjangoProject --no-site-packages
  6. cd MyDjangoProject
  7. source bin/activate(これにより、作成したサンドボックスがアクティブになりますvirtualenv)
  8. pip install django mysql-python

この時点で、完全に機能する Django+MySQL のインストールが完了しているはずです (ステップを見逃した場合は、コメントしてください。追加してみます)。次のように Django プロジェクトを開始できますdjango-admin.py startproject MyDjangoProjectcdプロジェクトのディレクトリに移動し、MySQL データベースを指すようにファイルを編集し、開発settings.pyサーバーを実行して次のようにテストします./manage.py runserver(ファイルが必要になる場合があります)。出来上がり!でサイトにアクセスできるはずです。プロジェクトの作業が完了したら、 を使用してサンドボックスを終了できます。chmod u+xmanage.pylocalhost:8000deactivatevirtualenv

これらすべてを Django に当てはめないようにしてください。その多くは、Python ライブラリを操作するためのベスト プラクティスにすぎません。はるかに少ない数でやり遂げることができますが、この方法では再現性が高くなり、別のプロジェクトで作業しているときに、このプロジェクトの依存関係の 1 つを誤って台無しにする可能性が低くなります。

于 2010-05-24T20:41:45.420 に答える
0

私はこの問題を抱えていましたが、設定が間違っていたことが原因であることが判明しました:export VERSIONER_PYTHON_PREFER_32_BIT = yesこれを有効にしたもの(32ビットを必要とする一部のパッケージ)を思い出せません。おそらくGoogleAppEngineに関連しています。しかし、それを「いいえ」に設定すると、問題によって解決されます。

それ以外の場合は、homebrewとpipを使用してすべてをインストールしました。

于 2011-06-09T20:50:20.113 に答える