Django - 安装 mysqlclient 错误:需要 mysqlclient 1.3.13 或更高版本;你有 0.9.3

Posted

技术标签:

【中文标题】Django - 安装 mysqlclient 错误:需要 mysqlclient 1.3.13 或更高版本;你有 0.9.3【英文标题】:Django - installing mysqlclient error: mysqlclient 1.3.13 or newer is required; you have 0.9.3 【发布时间】:2019-09-03 13:55:43 【问题描述】:

我浏览了论坛,但找不到答案,甚至找不到任何关于此的文档。尝试重新创建一个类似 www.testandtrack.io 的网站

在运行命令时:

python manage.py inspectdb

我收到 错误:

mysqlclient 1.3.13 or newer is required; you have 0.9.3

我已经尝试了所有建议的修复方法,包括: - 升级点 - 使用命令 pip install mysqlclient-1.4.2-cp37-cp37m-win32.whl 安装不同的***(32 位而不是 64 位),即 mysqlclient-1.4.2-cp37-cp37m-win32.whl (没有一个错误,但没有完成所需的工作!)

我的目标是将遗留的 mysql 数据库(在 XAMPP 和 myphpadmin 内部运行)简单地连接到 Django。我已经按照文档忽略了安装 mysqlclient 的需要,并且在这一点上卡住了。

【问题讨论】:

【参考方案1】:

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

您可以尝试在您的项目中搜索以下代码sn-p。如果您发现了,请尝试以下方法解决此问题:

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过程中需要帮助,请参考此链接:How to install Python MySQLdb module using pip?,并确保在pip install mysqlclient之前已经安装了libssl-dev

【讨论】:

如果你使用的是centos7 yum install mysql-devel 需要在pip install mysqlclient之前。 截至今天,我发现您需要以这种方式将版本更新为1.4.2pymysql.version_info = (1, 4, 2, "final", 0)【参考方案2】:

这就是我修复它的方法。

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

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

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

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

/Lib/site-packages/django/db/base.py

打开文件base.py并搜索:

version = Database.version_info

在 if 和注释行中放一个 pass

raise ImproperlyConfigured('mysqlclient 1.3.13 或更新版本是必需的; 你有 %s。 % 数据库。版本)

像这样。

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

现在,尝试运行服务器。

@编辑

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

【讨论】:

这行得通,但还有其他方法吗?我的意思是如何在我们可能无法访问这些文件的真实服务器上修复它。? @KrishnadasPC 你找到解决方案了吗? 没有找到适合我的其他解决方案。由于这个问题,我已经转移到 nodejs 并且 django 的定制对我来说似乎非常困难。 @KrishnadasPC 建议通过 SSH 连接到您的服务器并使用 VIM 更改文件。 @KrishnadasPC 使用 django 的真实服务器将可以访问这些文件。我在一个容器中运行 django,我通过用“(2,0,0)”替换“Database.version_info”来跳过导致引发的 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【参考方案3】:

由于pymysql,我遇到了与安装较低版本的mysqlclient相同的问题。

操作系统:Linux Mint 19.1

Python:3.6.8

Django:2.2.2

    卸载mysqlclient:pip3 uninstall mysqlclient 卸载pymysql:pip3 uninstall pymysql 安装mysqlclient:pip3 install mysqlclient

【讨论】:

【参考方案4】:

默认设置在pycharm中创建Django项目时会出现这个问题。 django默认版本是2.2.6造成的,直接把django版本降级到2.1.7,终端报错就没有了。

pip install Django==2.1.7

就是这样!

【讨论】:

【参考方案5】:

不要编辑内部配置,而是尝试升级mysqlclient的版本

pip3 install -U mysqlclient

【讨论】:

我尝试升级 mysqlclient 但错误与 pymysql 依赖有关。请注意,最后一个 pymysql 版本正是 django 指出的错误(0.9.3)。【参考方案6】:

    安装***:

    pip 安装***

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

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

    安装下载的文件:pip install &lt;file name&gt;

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

【讨论】:

谢谢你 - 很好的建议,因为它揭示了这一点的奇怪之处。在卸载并再次安装时,它指出“要求已经满足:c:\users\marvins\envs\djangottio\lib\site-packages (1.4.2) 中的 mysqlclient”,但在尝试运行检查命令时仍然出现以下错误: 配置不当:需要 mysqlclient 1.3.13 或更新版本;你有 0.9.3。 我需要脱离虚拟环境吗? 我再次尝试制作一个新的 VENV ....在尝试安装“pip install mysqlclient”时,它现在出现了这个错误!错误:需要 Microsoft Visual C++ 14.0。使用“Microsoft Visual C++ 构建工具”获取它:visualstudio.microsoft.com/downloads 我认为虚拟环境在这里并不重要。但是你可以试试这个(告诉我它是否有效,所以我会编辑我的答案):pip install wheel 然后从这里下载你感兴趣的 .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 并重新安装***。仍然,同样的错误【参考方案7】:

以下解决方案适用于 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()

【讨论】:

【参考方案8】:

我只要打开 settings.py 并包含它就可以了

 import pymysql
 pymysql.version_info = (1, 4, 6, 'final', 0)
 pymysql.install_as_MySQLdb()

【讨论】:

被低估的评论。这就像一个魅力!【参考方案9】:

我有类似的问题,我得到了

“django.core.exceptions.ImproperlyConfigured:需要 mysqlclient 1.3.13 或更新版本;你有 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):

这是一个比我小的版本,它可以工作。

【讨论】:

【参考方案10】:

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

【讨论】:

【参考方案11】:

长期以来,我一直在寻找解决此问题的方法。我使用的是 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

【讨论】:

我现在有同样的问题,但我仍然无法解决它。执行第二个命令时出现错误:Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-z_tudjri/mysqlclient/ 您的设置工具可能已过时。运行 pip install --upgrade setuptools 并检查它是否有效 是的,这是真的。我刚刚更新了 setuptools 包并成功安装了 mysqlclient 包。谢谢【参考方案12】:

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

在终端中运行以下命令

    sudo apt-get install python3-dev default-libmysqlclient-dev build-essential

    pip 安装 mysqlclient

【讨论】:

【参考方案13】:

像我一样转到你的虚拟环境目录:

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

那么你的问题可能会解决。

【讨论】:

【参考方案14】:

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

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

我首先 pip 卸载 pymysql (因为它似乎不再工作了)

然后我使用了 pip install mysqlclient

最后,我检查了所有“pymysql”导入并删除了它们。

请务必点击链接中评论的“赞”按钮

【讨论】:

以上是关于Django - 安装 mysqlclient 错误:需要 mysqlclient 1.3.13 或更高版本;你有 0.9.3的主要内容,如果未能解决你的问题,请参考以下文章

Django(11)mac安装mysqlclient报错

Django启动时mysqlclient报错版本低于1.3.13

Django启动时mysqlclient报错版本低于1.3.13

centOS7安装数据库驱动pip install mysqlclient 安装django

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.9.3.

Django 2021年最新版教程8操作Mysql数据库 mysqlclient安装和使用