При установке mysql-python в виртуальное окружение с Python 3.4 появляется ошибка
(env)$ pip install mysql-python
Ошибка
Using cached MySQL-python-1.2.5.zip
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-build-9zy23uvj/mysql-python/setup.py", line 13, in <module>
from setup_posix import get_config
File "/tmp/pip-build-9zy23uvj/mysql-python/setup_posix.py", line 2, in <module>
from ConfigParser import SafeConfigParser
ImportError: No module named 'ConfigParser'
В Python 3, ConfigParser был переименован configparser в соответствии с PEP 8. Можно переименовать ConfigParser в configparser и установить согласно нижеследующей инструкции:
Решение ради интереса
- Скачать модуль с (сайта)[https://pypi.python.org/pypi/MySQL-python/1.2.5]:
$ wget https://pypi.python.org/packages/source/M/MySQL-python/MySQL-python-1.2.5.zip#md5=654f75b302db6ed8dc5a898c625e030c
- Распаковать
$ unzip MySQL-python-1.2.5.zip
- Отредактировать файл и переименуем ConfigParser в configparser
$ nano +2 MySQL-python-1.2.5/setup_posix.py
- from ConfigParser import SafeConfigParser
+ from configparser import SafeConfigParser
Дальше все устанавливается без проблем:
(env)$ cd MySQL-python-1.2.5 && python setup.py install
...
Processing dependencies for MySQL-python==1.2.5
Finished processing dependencies for MySQL-python==1.2.5
Проблема осталась
Но проблема лежит гораздо глубже. Модуль mysql-python не совместим с Python 3.3
При выполнении команды (env)$ python manage.py migrate появляется проблема:
from MySQLdb.connections import Connection
File "/myapp/env/lib/python3.4/site-packages/MySQL_python-1.2.5-py3.4-linux-x86_64.egg/MySQLdb/connections.py", line 36
raise errorclass, errorvalue
^
SyntaxError: invalid syntax
Решение рабочее
Устанавливаем pymysql
(env)$ pip install pymysql
Прописываем в setings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'kadastroff',
'USER': 'kadastroff',
'PASSWORD': '123Qwerty',
'HOST': '',
'PORT': '',
}
}
В manage.py
try:
import pymysql
pymysql.install_as_MySQLdb()
except ImportError:
pass
Важно !
Говорят можно установить django-mysql-pymysql и прописать в 'ENGINE': 'mysql_pymysql' это вызывает ошибку
raise ImproperlyConfigured(error_msg)
django.core.exceptions.ImproperlyConfigured: 'mysql_pymysql' isn't an available database backend.
comments powered by Disqus