Как использовать MySQLdb с Python и Django в OSX 10.6? - PullRequest
255 голосов
/ 01 июня 2010

Это очень обсуждаемая проблема для пользователей OSX 10.6, но я не смог найти решение, которое работает. Вот мои настройки:

Python 2.6.1 64bit Джанго 1.2.1 MySQL 5.1.47 osx10.6 64bit

Я создаю virtualenvwrapper с --no-site-packages, затем установил Django. Когда я активирую virtualenv и запускаю python manage.py syncdb, я получаю эту ошибку:

Traceback (most recent call last):
File "manage.py", line 11, in <module>
  execute_manager(settings)
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/core/management/__init__.py", line 438, in execute_manager
  utility.execute()
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/core/management/__init__.py", line 379, in execute
  self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/core/management/__init__.py", line 257, in fetch_command
  klass = load_command_class(app_name, subcommand)
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/core/management/__init__.py", line 67, in load_command_class
  module = import_module('%s.management.commands.%s' % (app_name, name))
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/utils/importlib.py", line 35, in import_module
  __import__(name)
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/core/management/commands/syncdb.py", line 7, in <module>
from django.core.management.sql import custom_sql_for_model, emit_post_sync_signal
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/core/management/sql.py", line 5, in <module>
from django.contrib.contenttypes import generic
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/contrib/contenttypes/generic.py", line 6, in <module>
  from django.db import connection
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/db/__init__.py", line 75, in <module>
  connection = connections[DEFAULT_DB_ALIAS]
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/db/utils.py", line 91, in __getitem__
  backend = load_backend(db['ENGINE'])
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/db/utils.py", line 32, in load_backend
  return import_module('.base', backend_name)
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/utils/importlib.py", line 35, in import_module
  __import__(name)
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/db/backends/mysql/base.py", line 14, in <module>
  raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

Я также установил адаптер MySQL для Python , но безрезультатно (может быть, я установил его неправильно?).

Кто-нибудь имел дело с этим раньше?

Ответы [ 23 ]

330 голосов
/ 13 ноября 2010

У меня была такая же ошибка, и pip install MySQL-python решил ее для меня.

Альтернативные установки:

  • Если у вас нет пункта, easy_install MySQL-python должно работать.
  • Если ваш питон управляется системой упаковки, возможно, вам придется использовать эта система (например, sudo apt-get install ...)

Ниже Soli отмечает, что если вы получите следующую ошибку:

EnvironmentError: mysql_config not found

... тогда у вас есть еще одна проблема с системной зависимостью. Решение этой проблемы зависит от системы, но для систем, производных от Debian:

sudo apt-get install python-mysqldb

61 голосов
/ 03 февраля 2011

Запустив Ubuntu, мне пришлось сделать:

sudo apt-get install python-mysqldb
57 голосов
/ 11 августа 2011

Добавление к другим ответам помогло мне завершить установку mysql-python:

virtualenv, mysql-python, pip: кто-нибудь знает как?

В Ubuntu ...

apt-get install libmysqlclient-dev
apt-get install python-dev
pip install mysql-python

Не забудьте добавить 'sudo' в начало команд, если у вас нет необходимых разрешений.

22 голосов
/ 11 мая 2015

Попробуйте это команды ниже. У меня они работают:

brew install mysql-connector-c 
pip install MySQL-python
19 голосов
/ 15 июня 2012

mysql_config должен быть на пути. На Mac сделайте

export PATH=$PATH:/usr/local/mysql/bin/
pip install MySQL-python
14 голосов
/ 30 ноября 2011
pip install mysql-python

поднял ошибку:

EnvironmentError: mysql_config не найден

sudo apt-get install python-mysqldb

исправил проблему.

10 голосов
/ 28 июня 2016

Как у меня получилось:

virtualenv -p python3.5 env/test

После получения моего env:

pip install pymysql
pip install django

Затем я запустил startproject и внутри manage.py я добавил это:

+ try:
+     import pymysql
+     pymysql.install_as_MySQLdb()
+ except:
+     pass

Также обновлено это внутри настроек:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'foobar_db',
        'USER': 'foobaruser',
        'PASSWORD': 'foobarpwd',
    }
}

У меня также установлено configparser==3.5.0 в моем virtualenv, не уверен, требовалось ли это или нет ...

Надеюсь, это поможет,

8 голосов
/ 06 марта 2014

Попробуйте: это решило проблему для меня.

pip install MySQL-python

8 голосов
/ 22 февраля 2014

Для меня отлично работает следующее: 64-битная версия Ubuntu 13.10:

sudo apt-get install libmysqlclient-dev
sudo apt-get install python-dev

Теперь перейдите к вашему virtualenv (например, к папке env) и выполните следующее:

sudo ./bin/pip install mysql-python

Я действительно нашел решение в отдельном вопросе, и я цитирую его ниже:

Если вы создали virtualenv с ключом --no-site-packages (по умолчанию), затем общесистемные установленные дополнения, такие как MySQLdb не включены в пакеты виртуальной среды.

Вам необходимо установить MySQLdb с помощью команды pip, установленной вместе с virtualenv. Либо активировать virtualenv с мусорным ведром / активировать сценария или используйте bin / pip из virtualenv для установки Библиотека MySQLdb также локально.

В качестве альтернативы, создайте новый virtualenv с помощью системных site-пакетов включается с помощью ключа --system-site-package.

Я думаю, это также должно работать с OSX. Единственной проблемой будет получение эквивалентной команды для установки libmysqlclient-dev и python-dev, поскольку они необходимы для компиляции mysql-python Думаю.

Надеюсь, это поможет.

7 голосов
/ 23 октября 2015

sudo apt-get install python-mysqldb отлично работает в Ubuntu

pip install mysql-python вызывает Ошибка среды

...