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 客户端的需要的文档进行操作,并且在这一点上卡住了。
安装轮子:
pip 安装轮
从这里下载你想要的文件:https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python
移动到您的下载目录(我猜它会是 cd Downloads
)
- 安装下载的文件:
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
- 卸载 mysqlclient:
pip3 uninstall mysqlclient
- 卸载pymysql:
pip3 uninstall pymysql
- 安装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 framework
从 2.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 特定的配置文件
运行 在终端中执行以下命令
sudo apt-get 安装 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__)
那么你的问题可能就解决了。
我搜索了论坛,但找不到答案,甚至找不到任何相关文档。尝试重新创建一个像 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 客户端的需要的文档进行操作,并且在这一点上卡住了。
安装轮子:
pip 安装轮
从这里下载你想要的文件:https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python
移动到您的下载目录(我猜它会是
cd Downloads
)- 安装下载的文件:
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
- 卸载 mysqlclient:
pip3 uninstall mysqlclient
- 卸载pymysql:
pip3 uninstall pymysql
- 安装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 framework
从 2.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 特定的配置文件
运行 在终端中执行以下命令
sudo apt-get 安装 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__)
那么你的问题可能就解决了。