Django - installing mysqlclient error: mysqlclient 1.3.13 or newer is required; you have 0.9.3

Django - installing mysqlclient error: mysqlclient 1.3.13 or newer is required; you have 0.9.3

我搜索了论坛,但找不到答案,甚至找不到任何相关文档。尝试重新创建一个像 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(这工作正常,没有错误,但没有完成所需的工作!)

我的 objective 只是将遗留 mysql 数据库(XAMPP 和 myphpadmin 中的 运行 连接到 Django。我已经按照忽略了安装 mysql 客户端的需要的文档进行操作,并且在这一点上卡住了。

  1. 安装轮子:

    pip 安装轮

  2. 从这里下载你想要的文件:https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python

  3. 移动到您的下载目录(我猜它会是 cd Downloads

  4. 安装下载的文件:pip install <file name>

警告!!您不能编辑下载的 .whl 文件的名称。它包含一些安装所需的信息。

我就是这样修复的。

转到您的 django/db/backends/mysql 安装目录。 检查错误消息中的路径。

我正在使用 pipenv,所以我的路径是:

/home/username/.local/share/virtualenvs/project-env/lib/python3.7/site-packages/django/db/backends/mysql

如果您使用传统环境,您的路径将是:

<env_directory_name>/Lib/site-packages/django/db/base.py

打开文件 base.py 并搜索:

version = Database.version_info

在 if 和注释行中放置一个 pass

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')

现在,尝试 运行 服务器。

@edit

直到这个答案,我没有找到其他解决方法。今天有更好的方法来处理这个问题。 有更好的方法。

由于 pymysql.

,我安装了较低版本的 mysqlclient 时遇到了同样的问题

OS: Linux 薄荷 19.1

Python: 3.6.8

Django: 2.2.2

  1. 卸载 mysqlclient:pip3 uninstall mysqlclient
  2. 卸载pymysql:pip3 uninstall pymysql
  3. 安装mysql客户端:pip3 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

如果它对您来说并不重要,作为变体,只需将您的 django framework2.2.2(例如)降级到 2.1

默认设置在pycharm中创建Django项目时出现此问题。 是因为django默认版本是2.2.6导致的,把django版本降到2.1.7,终端报错就没有了

pip install Django==2.1.7

就这些了!

github 上也有同样的问题。非常适合我的解决方案是 here.

我只是引用一位作者的话:

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.

一定要在 link

的评论中点击赞按钮

我猜你的项目使用的是pymysql而不是mysqlclient。

您可以尝试在您的项目中搜索以下代码片段。如果找到,请尝试以下方法解决此问题:

import pymysql
pymysql.install_as_MySQLdb()

在这两者之间插入一行代码,使其看起来像这样:

import pymysql
pymysql.version_info = (1, 3, 13, "final", 0)
pymysql.install_as_MySQLdb()

然后尝试开始您的项目。

  • 为什么我知道你用的是pymysql?因为0.9.3刚好是pymysql的最新版本。
  • 为什么项目使用pymysql而不是mysqlclient?因为它更容易安装。 pymysql不依赖系统库,而mysqlclient依赖libmysqlclient-dev等一系列系统库。
  • 为什么mysqlclient难安装,Django还是默认使用?因为 mysqlclient 更快,性能更好。所以如果你的项目对性能有很高的要求,我建议你去掉上面的兼容代码,在你的项目中安装mysqlclient。如果在安装mysqlclient的过程中需要帮助,请参考这个link:How to install Python MySQLdb module using pip?,并确保在pip install mysqlclient.
  • 之前已经安装了libssl-dev

很长一段时间以来,我一直在寻找这个问题的解决方案。我使用的是 Ubuntu 18.04,发现此解决方案对 python 版本 3.7.5

很有用

步骤 1. 通过 sudo apt-get install

安装 libpython3.7-dev
> sudo apt-get install libpython3.7-dev

第 2 步:安装 mysqlclient

> python3 -m pip install mysqlclient==1.4.6

以下解决方案适用于 Django 3.2.3 以消除 'mysqlclient 1.3.13 or newer is required; you have 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()

如果您在 ubuntu 上使用 Django,我建议您执行以下操作来解决问题,而不是编辑 Django 特定的配置文件

运行 在终端中执行以下命令

  1. sudo apt-get 安装 python3-dev default-libmysqlclient-dev build-essential

  2. 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__)

那么你的问题可能就解决了。