Как я могу использовать Django с MySQL в стеке MAMP? - PullRequest
2 голосов
/ 25 мая 2010

У меня есть трудности, особенно при установке модуля MySQLdb (MySQL-python-1.2.3c1) для подключения к MySQL в стеке MAMP. Я сделал несколько вещей, таких как копирование каталога и библиотеки mysql (включая плагин) из новой установки mysql (версия 5.1.47) в папку внутри MAMP (версия 5.1.37).

Теперь, сборка и установка модуля MySQLdb не дает мне ошибки.

Ошибка возникает, когда я вызываю 'import MySQLdb' из оболочки python (версия 2.6).

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

Есть идеи, что еще мне нужно сделать, чтобы это работало?

Спасибо большое, Роберт

========= Добавьте ответ системы после использования virtualenv, как предложено Хэнком Гаем ниже ...

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

После того, как я запустил python в virtualenv, импортировал 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

import 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']

Ответы [ 2 ]

1 голос
/ 25 мая 2010

Как вы устанавливаете MySQL-Python ? Я только что проверил в свежем virtualenv, и pip install mysql-python, кажется, сделал свое дело.

UPDATE:

pip напоминает менеджер пакетов для пакетов Python.

По умолчанию pip устанавливается в текущий каталог site-packages, который находится в вашем $PYTHONPATH. Это позволяет другим библиотекам / приложениям (таким как Django) обращаться к нему. pip также хорошо работает с virtualenv (это должно быть; Иан Биккинг написал их обоих), которая является изящной библиотекой, которая позволяет помещать в песочницу приложение. Это хорошо, потому что это означает, что вы можете попробовать что-то новое, не загрязняя (или даже не имея права на запись) глобальный каталог site-packages.

Возможно, сейчас это похоже на бритье яком, но я бы сказал, что стоит набрать скорость на pip и virtualenv (вы также можете посмотреть на virtualenvwrapper, но пока пропустим, это просто сахар для virtualenv). Это приведет к немного более сложному сценарию развертывания, чем размещение всего в глобальном 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 MyDjangoProject. cd в каталог вашего проекта, отредактируйте файл settings.py, чтобы он указывал на вашу базу данных MySQL, и запустите сервер разработки, чтобы проверить его следующим образом: ./manage.py runserver (вам может понадобиться chmod u+x ваш manage.py файл) , Вуаля! Вы должны иметь доступ к своему сайту на localhost:8000. Когда вы закончите работать над проектом, вы можете просто использовать deactivate для выхода из песочницы virtualenv.

Старайтесь не связывать все это с Django: во многом это просто лучшие практики для работы с библиотеками Python. Вы могли бы обойтись намного меньшим, но таким образом это более воспроизводимо, и вы с меньшей вероятностью случайно испортите одну из зависимостей этого проекта при работе над другим проектом.

0 голосов
/ 10 июня 2011

У меня была эта проблема, и она оказалась из-за ошибочной конфигурации: export VERSIONER_PYTHON_PREFER_32_BIT = да Я не могу вспомнить, для чего я включил это (некоторые пакеты, которые требовали 32-битной версии), вероятно, связанные с Google AppEngine Но установка «нет» решается проблемами.

В противном случае я просто установил все, используя homebrew и pip.

...