Ошибка настройки django с python-mysql в Mac OS 10.6.6 - PullRequest
3 голосов
/ 04 марта 2011

Моя настройка:

  • Mac OS 10.6.6 - x86_64
  • MySQL 5.5.8
  • Python 2.7.1
  • Джанго 1.2.5
  • mysql-python установлен через easy_install

Моя ситуация:

Я изо всех сил пытался заставить мою установку работать. Проблема в интерфейсе mysql-python. Первоначально у меня была похожая проблема (с той, что у меня есть с Django) при выполнении оператора импорта в python:

import MySQLdb

Но я прочитал этот вопрос / решение , который оказался успешным в его исправлении. Я установил django, и он прекрасно работает, но у него проблемы с интерфейсом mysql. Когда я запускаю Терминал и набираю:

>> python manage.py dbshell

генерируется следующая ошибка:

Traceback (последний вызов был последним): Файл "manage.py", строка 11, в execute_manager (настройки) Файл "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/init.py", строка 438, в execute_manager utility.execute () Файл "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/init.py", строка 379, в исполнении self.fetch_command (субкоманда) .run_from_argv (self.argv) Файл "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/init.py", строка 261, в fetch_command klass = load_command_class (имя_приложения, подкоманда) Файл "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/init.py", строка 67, в load_command_class module = import_module ('% s.management.commands.% s'% (имя_приложения, имя)) Файл "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/utils/importlib.py", строка 35, в файле import_module импорт (имя) Файл "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/commands/dbshell.py", строка 4, в из django.db импортировать соединения, DEFAULT_DB_ALIAS Файл "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/init.py", строка 77, в соединение = соединения [DEFAULT_DB_ALIAS] Файл "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/utils.py", строка 92, в getitem backend = load_backend (дБ ['ENGINE']) Файл "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/utils.py", строка 33, в load_backend вернуть import_module ('. base', backend_name) Файл "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/utils/importlib.py", строка 35, в файле import_module импорт (имя) Файл "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/backends/mysql/base.py", строка 14, в поднять ImproperlyConfigured («Ошибка загрузки модуля MySQLdb:% s»% e) django.core.exceptions.ImproperlyConfigured: Ошибка загрузки модуля MySQLdb: dlopen (/Users/adogc45/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.egg-tmp/_mysql.so, 2 ): Библиотека не загружена: libmysqlclient.16.dylib Ссылка на: /Users/adogc45/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.egg-tmp/_mysql.so Причина: изображение не найдено

Теперь я не понимаю, почему импорт модуля в Python не вызывает ошибку, а использование интерфейса mysql в django делает.

Кстати, мой settings.py выглядит так:

DATABASES = {
'default': {
    'ENGINE': 'mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.

Кроме того, изображение фактически завершается в ... / MySQL_python-1.2.3-py2.7-macosx-10.6-intel.egg-tmp

Итак, я понятия не имею, что происходит.

Ответы [ 3 ]

5 голосов
/ 12 сентября 2011

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

или:

pip install MySQL-python
pip install --upgrade MySQL-python

Помогло мне в рамках virtualenv

2 голосов
/ 11 марта 2011

У меня была похожая проблема, которую я решил для программы разработки, включив эту строку в мой файл .bash_profile (волшебный файл в моей ~ директории, в которой работает оболочка): export DYLD_LIBRARY_PATH = / usr / local / mysql / lib/ где нарушающий libmysqlclient.16.dylib находится в этом каталоге.

Однако, когда я пытаюсь запустить это в Apache как модуль wsgi python, Apache не может найти libmysqlclient.16.dylib независимо от того, что я делаю.Я попытался sys.path.append ('/ usr / local / mysql / lib') os.environ ['DYLD_LIBRARY_PATH'] = '/ usr / local / mysql / lib' не повезло ... кажется, Apache не читает этопеременная окружения, а также python в этом контексте (где он не читает мой файл .bash_profile) ... help !!!

0 голосов
/ 07 марта 2011

Попробуйте:

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql',

Вместо mysql, если вы используете Django 1.2.5.

...