Как использовать MySQLdb с Python и Django в OSX 10.6?

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

Python 2.6.1 64-битный Django 1.2.1 MySQL 5.1.47 osx10.6 64-битный

Я создаю 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, но безрезультатно (возможно, я установил неправильно?).

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


person Joe    schedule 01.06.2010    source источник
comment
Эта проблема возникла в результате неполной / неправильной установки адаптера MySQL для Python. В частности, мне пришлось отредактировать путь к файлу mysql_config, чтобы он указывал на / usr / local / mysql / bin / mysql_config - более подробно обсуждается в этой статье: dakrauth.com/blog/entry/   -  person Joe    schedule 01.06.2010
comment
просто сделайте это ---------- apt-get install python-mysqldb   -  person shadow0359    schedule 10.01.2017
comment
pip install mysql у меня сработало!   -  person Ivan Carrasco Quiroz    schedule 21.05.2017


Ответы (23)


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

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

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

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

EnvironmentError: mysql_config not found

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

sudo apt-get install python-mysqldb

person Clint    schedule 12.11.2010
comment
да, я использовал Synaptic Package Manager для поиска и установки mysql-python, и он отлично работал. Спасибо. - person Tomasz Iniewicz; 03.05.2011
comment
В Fedora 17: sudo yum install MySQL-python :) - person g19fanatic; 24.08.2012
comment
ошибка: не удается загрузить osdn. dl.sourceforge.net/sourceforge/mysql-python/: 404 не найдено - person a coder; 05.10.2012
comment
Последнее примечание неверно. Нет пакета или системного пакета с именем python-mysqldb. - person Cerin; 16.10.2012
comment
$ mysql_config Программа mysql_config в настоящее время не установлена. Вы можете установить его, набрав: sudo apt-get install libmysqlclient-dev - person anders; 07.11.2012
comment
Последний шаг не работает для клиентов Mac OS X, так как у них нет apt-get. - person George Stocker; 19.02.2013
comment
должен добавить этот ответ в официальный документ django - person Siwei; 14.07.2013
comment
easy_install MySQL-python в Mac OS X Mountain Lion 10.8.4 был тем, что мне нужно было избавиться: django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb - person andilabs; 28.08.2013
comment
Я думаю, что я единственный человек с этой ошибкой 'Команда python setup.py egg_info завершилась неудачно с кодом ошибки 1' после запуска 'pip install MySQL-python' - person RicardoGonzales; 19.06.2014
comment
не забудьте выполнить sudo service apache2 restart, чтобы эти изменения вступили в силу. - person S..; 27.10.2014

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

sudo apt-get install python-mysqldb
person kottin    schedule 02.02.2011
comment
Он работает под управлением OS X, а не Ubuntu - person Facundo Casco; 08.06.2011
comment
Также это не поместило бы его в virtualenv - person Twirrim; 15.02.2012

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

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

В Ubuntu ...

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

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

person MrOodles    schedule 11.08.2011
comment
ключ - apt-get install python-dev. Понятия не имею, почему я устанавливаю версию python для разработчиков 2 года спустя, но на сегодняшний день она работает с использованием python 2.7.3. Только 3 часа потрачены впустую. - person user798719; 02.07.2013

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

brew install mysql-connector-c 
pip install MySQL-python
person DàChún    schedule 11.05.2015
comment
Этот метод решил мою проблему. Все остальные предложения перед отправкой мне сообщения об ошибке Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/r8/c_tscq492sn641w5vtvqcvkw0000gp/T/pip-build-JYY1du/MySQL-python - person LearnAWK; 05.10.2015
comment
Большое спасибо, попробуйте все изложенное выше. Никто не работал на OSX 10.11, ожидайте этого - person Paullo; 01.01.2016
comment
@LearnAWK это не работает. Я все еще получаю сообщение об ошибке Команда python setup.py egg_info завершилась неудачно с кодом ошибки 1 в / private / var / folder / 3m / 97mbsh5x2bnghhk55130bh_h0000gn / T / pip-build-FFU1vL / MySQL-python / - person Stony; 21.08.2017

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

export PATH=$PATH:/usr/local/mysql/bin/
pip install MySQL-python
person toucan    schedule 14.06.2012
comment
Я пробовал это и по-прежнему получаю ту же ошибку: 'поднять ImproperlyConfigured (Ошибка загрузки модуля MySQLdb:% s% e) django.core.exceptions.ImproperlyConfigured: Ошибка загрузки модуля MySQLdb: Нет модуля с именем MySQLdb' ' - person filistea; 08.09.2013

pip install mysql-python

возникла ошибка:

EnvironmentError: mysql_config не найден

sudo apt-get install python-mysqldb

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

person Soli    schedule 30.11.2011

Как у меня это заработало:

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, не уверен, требуется ли это или нет ...

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

person Douglas    schedule 28.06.2016

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

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

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

sudo ./bin/pip install mysql-python

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

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

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

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

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

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

person Rafay    schedule 22.02.2014
comment
Спасибо! Вам необходимо установить MySQLdb с помощью команды pip, установленной с помощью virtualenv. - Помогает - person dobs; 28.06.2014
comment
Спасибо. sudo ./bin/pip install mysql-python очень помогает! - person theblackpearl; 31.10.2014

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

pip установить MySQL-python

person Community    schedule 06.03.2014
comment
Спасибо. Это помогло мне решить проблему с heroku и cleardb: ignite на django 1.7.1. - person Ryan Walton; 04.11.2014

Эта проблема возникла в результате неполной / неправильной установки адаптера MySQL для Python. В частности, мне пришлось отредактировать путь к файлу mysql_config, чтобы он указывал на / usr / local / mysql / bin / mysql_config - более подробно обсуждается в этой статье: http://dakrauth.com/blog/entry/python-and-django-setup-mac-os-x-leopard/

person Joe    schedule 23.09.2010

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

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

person Maurice Elagu    schedule 22.10.2015

Это работало для Red Hat Enterprise Linux Server версии 6.4.

sudo yum install mysql-devel
sudo yum install python-devel
pip install mysql-python
person Rohit Alekar    schedule 26.04.2014
comment
CentOS 7, вариант 1: yum install MySQL-python; вариант 2 (при использовании virtualenv): yum install mysql-devel; venv/bin/pip install MySQL-python. - person hudolejev; 03.05.2016

Вы можете установить как pip install mysqlclient

person Md Sirajus Salayhin    schedule 25.10.2016
comment
это отсортировало его для меня, так как я считаю, что это версия для использования для Python 3 - person A Star; 15.12.2016

Я сделал обновление до OSX Mavericks и Pycharm 3 и начал получать эту ошибку, я использовал pip и easy install и получил ошибку:

команда '/ usr / bin / clang' завершилась неудачно со статусом выхода 1.

Поэтому мне нужно обновить до Xcode 5 и снова попытаться установить с помощью pip.

pip install mysql-python

Это решит все проблемы.

person unixeO    schedule 27.11.2013

Возникшая здесь ошибка связана с импортом модуля python. Это можно решить, добавив папку python site-packages в переменную окружения $ PYTHONPATH в OS X. Таким образом, мы можем добавить следующую команду в файл .bash_profile:

export PYTHONPATH="$PYTHONPATH:/usr/local/lib/pythonx.x/site-packages/"

* замените x.x версией Python, которую вы используете

person Arun Reddy    schedule 13.11.2014
comment
Я пробовал это: stackoverflow.com/questions/25459386/, но не удалось, это спасло меня .. (Y) - person Kamaldeep singh Bhatia; 01.04.2018

Если вы используете python3, попробуйте следующее (моя ОС - Ubuntu 16.04):

sudo apt-get install python3-mysqldb
person Dillion Wang    schedule 08.03.2017

pip не работал у меня в 64-битной системе Windows 8. easy_install mysql-python у меня работает. Вы можете использовать easy_install, чтобы избежать сборки двоичных файлов в Windows, если pip не работает.

person kta    schedule 04.07.2015

У меня была такая же проблема на OSX 10.6.6. Но простой easy_install mysql-python на терминале не помог, так как последовал еще один сбой:

error: command 'gcc-4.2' failed with exit status 1.

По-видимому, эта проблема возникает после обновления с XCode3 (который изначально поставляется с OSX 10.6) до XCode4. Эта новая версия удаляет поддержку построения арки ppc. Если это тот же случай, попробуйте сделать следующее перед easy_install mysql-python

sudo bash
export ARCHFLAGS='-arch i386 -arch x86_64'
rm -r build
python setup.py build
python setup.py install

Большое спасибо Неду Дейли за это решение. Проверьте здесь

person jerrymouse    schedule 27.07.2011

Для меня проблема решилась простой переустановкой mysql-python

pip uninstall mysql-python
pip install mysql-python
person Özer S.    schedule 04.01.2017

Установить инструменты командной строки. У меня работает:

xcode-select --install
person Giovanni Benussi    schedule 11.03.2017

Я решил ту же проблему, установив библиотеку MySQL-python с помощью pip. Вы можете увидеть сообщение, отображаемое на моей консоли, когда я впервые изменил настройки своей базы данных в settings.py и выполнил команду makemigrations (решение соответствует приведенному ниже сообщению, просто посмотрите это).

  (vir_env) admins-MacBook-Pro-3:src admin$ python manage.py makemigrations
Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
    utility.execute()
  File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/core/management/__init__.py", line 312, in execute
    django.setup()
  File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/__init__.py", line 18, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/apps/registry.py", line 108, in populate
    app_config.import_models(all_models)
  File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/apps/config.py", line 198, in import_models
    self.models_module = import_module(models_module_name)
  File "/usr/local/Cellar/python/2.7.12_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/contrib/auth/models.py", line 41, in <module>
    class Permission(models.Model):
  File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/db/models/base.py", line 139, in __new__
    new_class.add_to_class('_meta', Options(meta, **kwargs))
  File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/db/models/base.py", line 324, in add_to_class
    value.contribute_to_class(cls, name)
  File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/db/models/options.py", line 250, in contribute_to_class
    self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
  File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/db/__init__.py", line 36, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/db/utils.py", line 240, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/db/utils.py", line 111, in load_backend
    return import_module('%s.base' % backend_name)
  File "/usr/local/Cellar/python/2.7.12_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 27, in <module>
    raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

Наконец, я решил эту проблему следующим образом:

(vir_env) admins-MacBook-Pro-3:src admin$ pip install MySQLdb
Collecting MySQLdb
  Could not find a version that satisfies the requirement MySQLdb (from versions: )
No matching distribution found for MySQLdb
(vir_env) admins-MacBook-Pro-3:src admin$ pip install MySQL-python
Collecting MySQL-python
  Downloading MySQL-python-1.2.5.zip (108kB)
    100% |████████████████████████████████| 112kB 364kB/s 
Building wheels for collected packages: MySQL-python
  Running setup.py bdist_wheel for MySQL-python ... done
  Stored in directory: /Users/admin/Library/Caches/pip/wheels/38/a3/89/ec87e092cfb38450fc91a62562055231deb0049a029054dc62
Successfully built MySQL-python
Installing collected packages: MySQL-python
Successfully installed MySQL-python-1.2.5
(vir_env) admins-MacBook-Pro-3:src admin$ python manage.py makemigrations
No changes detected
(vir_env) admins-MacBook-Pro-3:src admin$ python manage.py migrate
Operations to perform:
  Synchronize unmigrated apps: staticfiles, rest_framework, messages, crispy_forms
  Apply all migrations: admin, contenttypes, sessions, auth, PyApp
Synchronizing apps without migrations:
  Creating tables...
    Running deferred SQL...
  Installing custom SQL...
Running migrations:
  Rendering model states... DONE
  Applying PyApp.0001_initial... OK
  Applying PyApp.0002_auto_20170310_0936... OK
  Applying PyApp.0003_auto_20170310_0953... OK
  Applying PyApp.0004_auto_20170310_0954... OK
  Applying PyApp.0005_auto_20170311_0619... OK
  Applying PyApp.0006_auto_20170311_0622... OK
  Applying PyApp.0007_loraevksensor... OK
  Applying PyApp.0008_auto_20170315_0752... OK
  Applying PyApp.0009_auto_20170315_0753... OK
  Applying PyApp.0010_auto_20170315_0806... OK
  Applying PyApp.0011_auto_20170315_0814... OK
  Applying PyApp.0012_auto_20170315_0820... OK
  Applying PyApp.0013_auto_20170315_0822... OK
  Applying PyApp.0014_auto_20170315_0907... OK
  Applying PyApp.0015_auto_20170315_1041... OK
  Applying PyApp.0016_auto_20170315_1355... OK
  Applying PyApp.0017_auto_20170315_1401... OK
  Applying PyApp.0018_auto_20170331_1348... OK
  Applying PyApp.0019_auto_20170331_1349... OK
  Applying PyApp.0020_auto_20170331_1350... OK
  Applying PyApp.0021_auto_20170331_1458... OK
  Applying PyApp.0022_delete_postoffice... OK
  Applying PyApp.0023_posoffice... OK
  Applying PyApp.0024_auto_20170331_1504... OK
  Applying PyApp.0025_auto_20170331_1511... OK
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying sessions.0001_initial... OK
(vir_env) admins-MacBook-Pro-3:src admin$ 
person hygull    schedule 01.04.2017

Выполните эту команду

sudo pip install mysql-python;

теперь вы можете выполнить свою команду.

python manage.py startapp filename;
person Siddharth Shukla    schedule 28.11.2017

Я столкнулся с подобными ситуациями, подобными вашей, когда я использую python3.7 и django 2.1 в virtualenv на Mac OSX. Попробуйте запустить команду:

pip install mysql-python
pip install pymysql

И отредактируйте __init__.py файл в папке вашего проекта и добавьте следующее:

import pymysql

pymysql.install_as_MySQLdb()

Затем запустите: python3 manage.py runserver или python manage.py runserver

person Fred Lai    schedule 05.08.2018