Блог Синявского
  • Разделы
  • Метки
  • Все статьи

Ошибка при установке MySQLdb в виртуальное окружение c Python 3.4

1

При установке 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 и установить согласно нижеследующей инструкции:

Решение ради интереса

  1. Скачать модуль с (сайта)[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
  1. Распаковать
$ unzip MySQL-python-1.2.5.zip
  1. Отредактировать файл и переименуем 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

Опубликовано

04.04.2016

Обновление

05.05.2022

Категории

mysql

Тэги

  • mysql 7

Всегда на связи

  • Блог Синявского - Ничего не переносить на завтра, это тоже проблема с прокастинацией?
  • © Алексей Синявский, по лицензии CC BY-SA если не указано иное.
  • С использованием Pelican. Тема: Elegant от Talha Mansoor