Я просмотрел форумы, но не нашел ответа или даже какой-либо документации по этому вопросу. Попытка воссоздать сайт, например www.testandtrack.io
При запуске команды:
python manage.py inspectdb
Я получаю ошибка:
mysqlclient 1.3.13 or newer is required; you have 0.9.3
Я пробовал все предложенные исправления, включая: -обновление пипа -установка другого колеса (32 бит вместо 64), а именно mysqlclient-1.4.2-cp37-cp37m-win32.whl командой pip install mysqlclient-1.4.2-cp37-cp37m-win32.whl (это прекрасно работает без ошибка, но не выполняет требуемую работу!)
Моя цель — просто подключить устаревшую базу данных mysql (работающую внутри XAMPP и myphpadmin) к Django. Я следил за документацией, в которой отсутствует необходимость установки mysqlclient, и застрял на этом этапе.






Установить колесо:
Пип установить колесо
Загрузите нужный файл отсюда: https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python
Перейдите в каталог «Загрузки» (думаю, это будет cd Downloads)
pip install <file name>ПРЕДУПРЕЖДЕНИЕ!! Вы НЕ МОЖЕТЕ изменить имя загруженного файла .whl. Он содержит некоторую информацию, которая требуется для установки.
Нужно ли выходить из виртуальной среды?
Я попробовал еще раз, создав новый VENV .... при попытке установить «pip install mysqlclient», теперь возникла эта ошибка! ошибка: требуется Microsoft Visual C++ 14.0. Получите его с помощью «Инструментов сборки Microsoft Visual C++»: visualstudio.microsoft.com/downloads
Я думаю, что виртуальная среда здесь не имеет значения. Но вы можете попробовать это (скажите мне, работает ли это, поэтому я отредактирую свой ответ): установите колесо pip, затем загрузите интересующий вас .whl отсюда: lfd.uci.edu/~gohlke/pythonlibs/#mysql-python. А затем cd загружает && (если вы используете python3): pip install mysqlclient-1.3.8-cp36-cp36m-win_amd64.whl (если вы используете python2: pip install mysqlclient-1.3.8-cp27-cp27m-win_amd64.whl )
Я не понимаю, что вы просите меня сделать. Если вы прочтете мое обновление, то увидите, что я уже пытался установить колесо. Удаление pip, а также переустановка колеса. Тем не менее, та же ошибка
Я напишу это в ответ, я думаю, что я уверен, что это сработает
Я не очень хорошо знаком с окнами... Но я думаю, что вы можете просто удалить каталог, который отображается по ошибке... Худшее, что может случиться, это то, что вам придется переустановить python и pip.
Я уже сделал то, что вы предложили, поэтому не могу принять это как ответ. (см. мой вопрос и обновление!). Это не работает. Спасибо хоть
Вот как я это исправил.
Перейдите в каталог установки django/db/backends/mysql. Проверьте свой путь в сообщении об ошибке.
Я использую pipenv, поэтому мой путь:
/home/username/.local/share/virtualenvs/project-env/lib/python3.7/site-packages/django/db/backends/mysql
Если вы используете традиционный env, ваш путь будет таким:
<env_directory_name>/Lib/site-packages/django/db/base.py
Откройте файл base.py и найдите:
version = Database.version_info
Поместите проходить внутри строки if и комментария:
raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.version)
Так.
if version < (1, 3, 13):
pass
'''
raise ImproperlyConfigured(
'mysqlclient 1.3.13 or newer is required; you have %s.'
% Database.__version__
)
'''
Сохраните, закройте этот файл и откройте файлoperations.py.
Ищи:
query = query.decode(errors='replace')
и измените декодирование на кодирование
query = query.encode(errors='replace')
Теперь попробуйте запустить сервер.
@редактировать
До этого ответа я не нашел другого способа решить эту проблему. Сегодня есть лучшие способы справиться с этой проблемой. Этот отвечать имеет лучший подход.
Это сработало, но есть ли другие способы? Я имею в виду, как это исправить на реальном сервере, на котором у нас может не быть доступа к этим файлам.?
@KrishnadasPC, вы нашли какие-нибудь решения?
Других решений для меня не нашел. Из-за этой проблемы я перешел на nodejs, и настройка для django кажется очень сложной, по крайней мере, для меня.
@KrishnadasPC Предлагается подключиться к вашему серверу через SSH и использовать VIM для изменения файлов.
Настоящий сервер @KrishnadasPC, использующий django, будет иметь доступ к этим файлам. Я запускаю django в контейнере, и я обошел эту проблему, заменив «Database.version_info» на «(2,0,0)», чтобы пропустить оператор if, который вызывает повышение. bash-скрипт выглядит так: sed -i "s/Database.version_info/(2,0,0)/g" /usr/local/lib/python3.6/site-packages/django/db/backends/mysql/base.py
Это не сработало для меня. По какой-то причине он вызывает файл, которого нет на моем компьютере. Я не могу найти его, но он все еще вызывается и дает мне эту ошибку.
Вы не должны исправлять, редактируя файлы, следуйте приведенным ниже инструкциям stackoverflow.com/a/59591269/521586, которые намного чище и устойчивее, когда Django обновляется или прозрачны, когда кто-то пытается понять вашу настройку.
У меня была та же проблема, поскольку была установлена более низкая версия mysqlclient из-за pymysql.
ОС: Линукс Минт 19.1
Питон: 3.6.8
Джанго: 2.2.2
pip3 uninstall mysqlclientpip3 uninstall pymysqlpip3 install mysqlclientУ меня была аналогичная проблема, я получал
"django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 1.3.12."
Итак, я пошел в C:\Users\username\Envs\env\Lib\site-packages\django\db\backends\mysql, открыл base.py и изменил эту строку...
if version < (1, 3, 13):
к...
if version < (1, 3, 10):
это версия меньше моей, и это сработало.
Вместо редактирования внутренней конфигурации попробуйте обновить версию mysqlclient.
pip3 install -U mysqlclient
Я попытался обновить mysqlclient, но ошибка связана с зависимостью pymysql. Обратите внимание, что последний выпуск pymysql — это именно то, на что указывает ошибка django (0.9.3).
Если для вас не критично, как вариант, просто понизьте свой django framework с 2.2.2(например) до 2.1.
эта проблема возникает, когда вы создаете проект Django в pycharm по умолчанию. Это вызвано тем, что версия django по умолчанию — 2.2.6, поэтому просто понизьте версию django до 2.1.7, и ошибка в терминале исчезнет.
pip install Django==2.1.7
это все!
На гитхабе такая же проблема. Решение, которое идеально подходит для меня, это здесь.
Я просто цитирую автора:
I first pip uninstall pymysql (as it seems it doesn't work anymore)
Then I've used pip install mysqlclient
Last, I checked all my "pymysql" imports and deleted them.
Обязательно зайдите и нажмите кнопку «Мне нравится» в комментарии по ссылке.
Я предполагаю, что ваш проект использует pymysql вместо mysqlclient.
Вы можете попробовать найти следующий фрагмент кода в своем проекте. Если вы найдете его, попробуйте следующие способы решения этой проблемы:
import pymysql
pymysql.install_as_MySQLdb()
Вставьте строку кода между этими двумя, чтобы она выглядела так:
import pymysql
pymysql.version_info = (1, 3, 13, "final", 0)
pymysql.install_as_MySQLdb()
Затем попробуйте запустить свой проект.
libssl-dev был установлен до pip install mysqlclient.Если вы используете centos7, yum install mysql-devel требуется перед установкой pip mysqlclient.
На сегодняшний день я обнаружил, что вам нужно обновить версию таким образом до 1.4.2. pymysql.version_info = (1, 4, 2, "final", 0)
Я долго искал решение этой проблемы. Я использовал Ubuntu 18.04 и нашел это решение полезным для версии Python 3.7.5.
Шаг 1. Установите libpython3.7-dev через sudo apt-get install
> sudo apt-get install libpython3.7-dev
Шаг 2: Установите mysqlclient
> python3 -m pip install mysqlclient==1.4.6
У меня сейчас такая же проблема, и я до сих пор не могу ее исправить. У меня ошибка при выполнении второй команды: Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-z_tudjri/mysqlclient/
Ваши инструменты настройки могут быть устаревшими. Запустите pip install --upgrade setuptools и проверьте, работает ли это.
Да, это правда. Я только что обновил пакет setuptools и успешно установил пакет mysqlclient. Спасибо
Следующее решение работает в Django 3.2.3, чтобы избавиться от «требуется mysqlclient 1.3.13 или новее; у вас проблема 0.9.3':
1) pip uninstall mysqlclient # remove old version
2) pip install mysqlclient==1.3.13
3) comment or remove the old workaround in __init__.py of the main app.
# workaround django.core.exceptions.ImproperlyConfigured:
#Error loading MySQLdb module.
#Did you install mysqlclient?
#import pymysql
#pymysql.install_as_MySQLdb()
Если вы работаете с Django в Ubuntu, я предлагаю вам сделать следующее, чтобы решить проблему, а не редактировать файлы конфигурации, специфичные для django.
выполните следующие команды в терминале
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
pip установить mysqlclient
У меня все работало нормально, просто откройте settings.py и включите
import pymysql
pymysql.version_info = (1, 4, 6, 'final', 0)
pymysql.install_as_MySQLdb()
Недооцененный комментарий. Это работает как шарм!
Перейдите в каталог вашей виртуальной среды, такой как мой:
C:\Users\user\.virtualenvs\RPA-Orchestrator-Backend-GwIL98hN\Lib\site-packages\django\db\backends\mysql\base.py
Здесь вы можете отредактировать одну строку, чтобы избежать ошибки в файле base.py,
version = Database.version_info
if version < (0, 9, 3):
raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
Тогда ваша проблема может решиться.
Спасибо - хорошее предложение, поскольку оно показывает странность этого. При удалении и повторной установке появляется сообщение «Требование уже выполнено: mysqlclient in c:\users\marvins\envs\djangottio\lib\site-packages (1.4.2)», но следующая ошибка все еще возникает при попытке запустить команду проверки : Неправильно настроено: требуется mysqlclient 1.3.13 или новее; у вас 0.9.3.