Как использовать MySQLdb с Python и Django в OSX 10.6?
Это очень обсуждаемая проблема для пользователей 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 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, но безрезультатно (возможно, я установил его неправильно).
Кто-нибудь имел дело с этим раньше?
Ответы
Ответ 1
Эта проблема была связана с неполной/неправильной установкой адаптера MySQL для Python. В частности, мне пришлось отредактировать путь к файлу mysql_config, чтобы указать на /usr/local/mysql/bin/mysql _config - более подробно обсуждалось в этой статье: http://dakrauth.com/blog/entry/python-and-django-setup-mac-os-x-leopard/
Ответ 2
У меня была такая же ошибка, и pip install MySQL-python
решил это для меня.
Альтернативные установки:
- Если у вас нет пикета,
easy_install MySQL-python
должен работать.
- Если ваш python управляется системой упаковки, вам, возможно, придется использовать
эта система (например,
sudo apt-get install ...
)
Ниже, Soli отмечает, что если вы получаете следующую ошибку:
EnvironmentError: mysql_config not found
... тогда у вас есть еще одна проблема с системной зависимостью. Решение этого будет варьироваться от системы к системе, но для систем, созданных Debian:
sudo apt-get install python-mysqldb
Ответ 3
Запуск Ubuntu, я должен был сделать:
sudo apt-get install python-mysqldb
Ответ 4
Добавление к другим ответам помогло мне завершить установку mysql-python:
virtualenv, mysql-python, pip: кто-нибудь знает как?
В Ubuntu...
apt-get install libmysqlclient-dev
apt-get install python-dev
pip install mysql-python
Не забудьте добавить 'sudo' в начало команд, если у вас нет соответствующих разрешений.
Ответ 5
Попробуйте выполнить приведенные ниже команды. Они работают для меня:
brew install mysql-connector-c
pip install MySQL-python
Ответ 6
mysql_config
должен находиться на пути. На Mac сделайте
export PATH=$PATH:/usr/local/mysql/bin/
pip install MySQL-python
Ответ 7
pip install mysql-python
возникла ошибка:
EnvironmentError: mysql_config не найден
sudo apt-get install python-mysqldb
исправлена проблема.
Ответ 8
Как я получил работу:
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, не уверен, что это было необходимо или нет...
Надеюсь, что это поможет,
Ответ 9
Следующие отлично работали для меня, запустив Ubuntu 13.10 64-bit:
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 script, или используйте bin/pip из виртуального канала, чтобы установить MySQLdb также локально.
В качестве альтернативы создайте новый virtualenv с системными сайтами-пакетами включенным с помощью коммутатора -system-site-package.
Я думаю, что это также должно работать с OSX. Единственной проблемой будет получение эквивалентной команды для установки libmysqlclient-dev
и python-dev
, поскольку они необходимы для компиляции
mysql-python
Я думаю.
Надеюсь, что это поможет.
Ответ 10
Попробуйте следующее: это решило проблему для меня.
pip install MySQL-python
Ответ 11
sudo apt-get install python-mysqldb
отлично работает в ubuntu
pip install mysql-python
вызывает Ошибка окружения
Ответ 12
Это работало для версии Red Hat Enterprise Linux Server 6.4
sudo yum install mysql-devel
sudo yum install python-devel
pip install mysql-python
Ответ 13
Вы можете установить как pip install mysqlclient
Ответ 14
Я сделал обновление до OSX Mavericks и Pycharm 3 и начал получать эту ошибку, я использовал pip и легко установил и получил ошибку:
команда '/usr/bin/clang' не удалось с статусом выхода 1.
Итак, мне нужно обновить до Xcode 5 и попытаться снова установить с помощью pip.
pip install mysql-python
Это устраняет все проблемы.
Ответ 15
Возникла ошибка при импорте модуля python. Это можно решить, добавив папку python site-packages в переменную среды $PYTHONPATH на OS X. Таким образом, мы можем добавить следующую команду в файл .bash_profile:
export PYTHONPATH="$PYTHONPATH:/usr/local/lib/pythonx.x/site-packages/"
* замените x.x на версию python, которую вы используете
Ответ 16
pip
не работал у меня на 64-битной системе Windows 8.
easy_install mysql-python
работает для меня.
Вы можете использовать easy_install
, чтобы избежать создания двоичных файлов в окнах, если pip не работает.
Ответ 17
Если вы используете python3, попробуйте это (моя ОС - Ubuntu 16.04):
sudo apt-get install python3-mysqldb
Ответ 18
У меня была та же проблема на OSX 10.6.6. Но просто простой easy_install mysql-python
на терминале не решил его, как следует следующий икот:
error: command 'gcc-4.2' failed with exit status 1
.
По-видимому, эта проблема возникает после обновления с XCode3 (который изначально поставляется с OSX 10.6) на XCode4. Этот новый ver удаляет поддержку для сборки ppc arch. Если в том же случае, попробуйте сделать следующее: easy_install mysql-python
sudo bash
export ARCHFLAGS='-arch i386 -arch x86_64'
rm -r build
python setup.py build
python setup.py install
Большое спасибо Ned Deily за это решение. Проверить здесь
Ответ 19
Для меня проблема решена путем простой переустановки mysql-python
pip uninstall mysql-python
pip install mysql-python
Ответ 20
Установка средств командной строки Работает для меня:
xcode-select --install
Ответ 21
Я преодолел ту же проблему, установив библиотеку 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$
Ответ 22
Запустить эту команду
sudo pip install mysql-python;
теперь вы можете запустить свою команду.
python manage.py startapp filename;
Ответ 23
Я сталкивался с подобными ситуациями, как ваша, когда я использую 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