Як використовувати MySQLdb з Python та Django в OSX 10.6?


259

Це дуже обговорювана проблема для користувачів OSX 10.6, але я не зміг знайти рішення, яке працює. Ось моя настройка:

Python 2.6.1 64bit Django 1.2.1 MySQL 5.1.47 osx10.6 64bit

Я створюю virtualenvwrapper з --no-site-пакетами, після чого встановлюю Django. Коли я активую virtualenv і запускаю python Manag.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 for Python , але безрезультатно (можливо, я встановив його неправильно?).

Хтось цим займався раніше?


5
Ця проблема стала результатом неповної / некоректної установки адаптера MySQL for Python. Зокрема, мені довелося відредагувати шлях до файлу mysql_config, щоб вказати на / usr / local / mysql / bin / mysql_config - детальніше обговорюється в цій статті: dakrauth.com/blog/entry/…
Джо

просто зробіть це ---------- apt-get install python-mysqldb
shadow0359

pip install mysqlпрацював на мене!
Іван Карраско Кіроз

Відповіді:


330

Я мав таку ж помилку і pip install MySQL-pythonвирішив її для мене.

Чергові встановлення:

  • Якщо у вас немає піп, easy_install MySQL-pythonтреба працювати.
  • Якщо вашим python керує система упаковки, можливо, вам доведеться використовувати цю систему (наприклад sudo apt-get install ...)

Нижче Солі зазначає, що якщо ви отримаєте таку помилку:

EnvironmentError: mysql_config not found

... тоді у вас є додаткова проблема системної залежності. Вирішення цього варіанту залежить від системи до системи, але для систем, що походять від Debian:

sudo apt-get install python-mysqldb


2
Так, я використав Synaptic Package Manager для пошуку mysql-python та встановлення, і він працював чудово. Дякую.
Томаш Іневич

6
Під Fedora 17: sudo yum install MySQL-python:)
g19fanatic

20
$ mysql_configПрограма "mysql_config" наразі не встановлена. Ви можете встановити його, натиснувши:sudo apt-get install libmysqlclient-dev
anders

1
слід додати цю відповідь до офіційного документа про
джанго

1
Я думаю, що я унікальна людина з цією помилкою 'Command python setup.py egg_info не вдалося з кодом помилки 1' після запуску 'встановити pip MySQL-python'
RicardoGonzales

62

Запускаючи Ubuntu, мені довелося зробити:

sudo apt-get install python-mysqldb

8
Він працює під управлінням OS X, а не Ubuntu
Facundo Casco

8
Крім того, це не помістило б це у virtualenv
Twirrim

58

Додаючи до інших відповідей, наступне допомогло мені закінчити інсталяцію mysql-python:

virtualenv, mysql-python, pip: хто знає як?

У Ubuntu ...

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

Не забудьте додати "sudo" до початку команд, якщо у вас немає належних дозволів.


1
ключ - apt-get install python-dev. Не маю ідеї, чому я встановлюю розроблену версію python через 2 роки, але це працює сьогодні, використовуючи python 2.7.3. Втрачено лише 3 години.
користувач798719

23

Спробуйте це команди нижче. Вони працюють на мене:

brew install mysql-connector-c 
pip install MySQL-python

Цей метод вирішив мою проблему. Усі інші пропозиції перед тим, як надіслати мені повідомлення про помилкуCommand "python setup.py egg_info" failed with error code 1 in /private/var/folders/r8/c_tscq492sn641w5vtvqcvkw0000gp/T/pip-build-JYY1du/MySQL-python
LearnAWK

2
Дякую чудово, спробуйте все сказане вище. Ніхто не працював на OSX 10.11, очікував цього
Полло

1
@LearnAWK це не працює. Я все ще отримую помилку Команда "python setup.py egg_info" не вдалася з кодом помилки 1 в / private / var / folders / 3m / 97mbsh5x2bnghhk55130bh_h0000gn / T / pip-build-FFU1vL / MySQL-python /
Stony

19

mysql_configповинні бути на шляху. На Mac зробіть

export PATH=$PATH:/usr/local/mysql/bin/
pip install MySQL-python

4
Я спробував це і все одно отримую ту саму помилку: 'Підняти НеправильноConfigured ("Помилка завантаження модуля MySQLdb:% s"% e) django.core.exceptions.ImproperlyConfigured: Помилка завантаження модуля MySQLdb: Немає модуля з іменем MySQLdb'
filistea

14
pip install mysql-python

виникла помилка:

EnvironmentError: mysql_config не знайдено

sudo apt-get install python-mysqldb

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


11

Як я працював:

virtualenv -p python3.5 env/test

Після пошуку моєї анві:

pip install pymysql
pip install django

Потім я запустив startproject і всередині manag.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

Наступні відмінно працювали для мене, під керуванням Ubuntu 13.10 64-розрядного:

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

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

sudo ./bin/pip install mysql-python

Я фактично знайшов рішення в окремому запитанні і цитую його нижче:

Якщо ви створили virtualenv за допомогою перемикача --no-site-пакети (за замовчуванням), встановлені загальносистемні доповнення, такі як MySQLdb, не включаються до пакетів віртуального середовища.

Вам потрібно встановити MySQLdb за допомогою команди pip, встановленої за допомогою virtualenv. Або активуйте virtualenv за допомогою сценарію bin / activate, або використовуйте bin / pip всередині virtualenv для установки бібліотеки MySQLdb також локально.

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

Я думаю, це також має працювати з OSX. Єдиною проблемою було б отримання еквівалентної команди для встановлення, libmysqlclient-devі python-devяк вони потрібні для компіляції, mysql-pythonя думаю.

Сподіваюсь, це допомагає.


2
Дякую! Вам потрібно встановити MySQLdb за допомогою команди pip, встановленої за допомогою virtualenv. - Допомагає
dobs

Дякую. sudo ./bin/pip install mysql-pythonдуже корисно!
theblackpearl

8

Спробуйте так: Це вирішило проблему для мене.

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


2
Дякую. Це працювало, щоб вирішити проблему для мене heroku та cleardb: ignite on django 1.7.1.
Райан Уолтон

7

Ця проблема стала результатом неповної / некоректної установки адаптера MySQL for Python. Зокрема, мені довелося відредагувати шлях до файлу mysql_config, щоб вказати на / usr / local / mysql / bin / mysql_config - докладніше обговорюється в цій статті: http://dakrauth.com/blog/entry/python-and- django-setup-mac-os-x-leopard /


7

sudo apt-get install python-mysqldb прекрасно працює в ubuntu

pip install mysql-pythonвикликає помилку навколишнього середовища


5

Це працювало для випуску Red Hat Enterprise Linux Server 6.4

sudo yum install mysql-devel
sudo yum install python-devel
pip install mysql-python

CentOS 7, варіант 1 yum install MySQL-python:; варіант 2 (при використанні virtualenv) yum install mysql-devel; venv/bin/pip install MySQL-python.
худолеев


3

Я зробив оновлення до OSX Mavericks і Pycharm 3 і почав отримувати цю помилку, я використав pip та просту установку та отримав помилку:

команда '/ usr / bin / clang' не вдалася зі статусом виходу 1.

Тому мені потрібно оновити Xcode 5 і спробувати інсталювати за допомогою pip.

pip install mysql-python

Це виправляє всі проблеми.


2

Тут виникає помилка в імпорті модуля python. Це можна вирішити, додавши папку пакунків сайту python до змінної середовища $ PYTHONPATH в OS X. Отже, ми можемо додати наступну команду до файлу .bash_profile:

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

* замініть xx версією python, яку ви використовуєте


Я спробував це: stackoverflow.com/questions/25459386/…, але не вдалося, це врятувало мене .. (Y)
Kamaldeep singh Bhatia

2

Якщо ви використовуєте python3, то спробуйте це (Моя ОС - Ubuntu 16.04):

sudo apt-get install python3-mysqldb

2

pipне працював для мене на Windows 8 64 біт системи. easy_install mysql-pythonпрацює для мене. Ви можете використовувати easy_installдля уникнення побудови бінарних файлів на Windows, якщо pip не працює.


1

У мене була така ж проблема в 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

Велике спасибі Неду Дейлі за таке рішення. Перевірте тут


0

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

pip uninstall mysql-python
pip install mysql-python


0

Я подолав ту саму проблему, встановивши MySQL-pythonбібліотеку за допомогою pip . Ви можете бачити повідомлення, яке відображається на моїй консолі, коли я вперше змінив налаштування бази даних у налаштуваннях.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$ 

0

Виконайте цю команду

sudo pip install mysql-python;

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

python manage.py startapp filename;

0

Я стикався з подібними ситуаціями, як ваша, що я використовую 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.