[英]django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module. Did you install mysqlclient?
[英]Error loading MySQLdb Module 'Did you install mysqlclient or MySQL-python?'
我在使用 python34 的 django 项目中使用 windows 10 命令行但是,我在使用 SQL 时遇到了困难。
我已经使用pip install mysqlclient==1.3.5
了 mysqlclient 并找到了文件以确保我没有妄想。 然后我运行python manage.py migrate
将表迁移到 SQL 数据库(我使用的是 phpmyadmin)。 但是,当命令返回时...
File "C:\Users\user\env\lib\site-packages\django\db\backends\mysql\base.py", line 30, in <module>
'Did you install mysqlclient or MySQL-python?' % e
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'.
Did you install mysqlclient or MySQL-python?
我知道这样的问题已经存在,但似乎没有一种解决方案对尝试产生任何影响。
pip install pymysql
然后,编辑项目源目录中的 __init__.py 文件(与 settings.py 相同)
添加:
import pymysql
pymysql.install_as_MySQLdb()
迁移到 python 3 后遇到同样的问题。显然,MySQL-python 不兼容,因此根据官方django 文档,在 Mac 上使用pip install mysqlclient
了mysqlclient 。 请注意,文档中提到了一些特定于操作系统的问题。
引用文档:
先决条件
您可能需要安装 Python 和 MySQL 开发头文件和库,如下所示:
sudo apt-get install python-dev default-libmysqlclient-dev
# Debian / Ubuntu
sudo yum install python-devel mysql-devel
# Red Hat / CentOS
brew install mysql-connector-c
# macOS (Homebrew) (目前,它有错误。见下文)在 Windows 上,您可以在没有 MySQLConnector/C 或 MSVC 的情况下安装二进制轮子。
关于 Python 3 的注意事项:如果您使用的是 python3,那么您需要使用以下命令安装 python3-dev:
sudo apt-get install python3-dev
# debian / Ubuntu
sudo yum install python3-devel
# Red Hat / CentOSmacOS 上 MySQL Connector/C 的 bug 说明
另见: https ://bugs.mysql.com/bug.php?id=86971
MySQL Connector/C 的版本可能有不正确的默认配置选项,在安装
mysqlclient-python
时会导致编译错误。 (截至 2017 年 11 月,这对于 homebrew 的mysql-connector-c
和官方包来说是已知的)
mysql_config
的修改解决了这些问题,如下所示。改变
# on macOS, on or about line 112:
# Create options
libs="-L$pkglibdir"
libs="$libs -l "
至
# Create options
libs="-L$pkglibdir"
libs="$libs -lmysqlclient -lssl -lcrypto"
不正确的 ssl 配置也可能产生问题; 有关 macOS 的详细信息,请参见
brew info openssl
。从 PyPI 安装
pip install mysqlclient
注意:Windows 的 Wheels 可能不会与源包一起发布。 您应该在
requirements.txt
中固定版本以避免尝试安装最新的源包。从源安装
- 通过
git clone
或zipfile下载源代码。- 自定义
site.cfg
python setup.py install
对于点
pip install pymysql
对于 pip3 你应该使用
python3 -m pip install PyMySQL
然后,编辑项目源目录中的 init.py 文件(与 settings.py 相同)。 添加:
import pymysql
pymysql.install_as_MySQLdb()
这个命令从上面@Aniket Sinha 的回答中得到了诀窍:
pip install mysqlclient
使用以下命令解决您的问题,
pip install mysql-python
apt-get install python3-mysqldb libmysqlclient-dev python-dev
在 Debian 上工作
如果您已经安装了mysqlclient
(即您看到Requirement already satisfied
compatible )并且正在Error loading MySQLdb Module
,则以下内容对我有用:
pip uninstall mysqlclient
export LDFLAGS="-L/usr/local/opt/openssl/lib"
和export CPPFLAGS="-I/usr/local/opt/openssl/include"
如此处所述pip install mysqlclient
这重新安装了mysqlclient
并出于某种原因解决了我的问题。
对于 MAC 操作系统用户:
我多次遇到这个问题。 这里的关键是在通过pip命令安装mysqlclient之前设置好这些环境变量。 就我而言,它们如下所示:
export LDFLAGS="-L/usr/local/opt/protobuf@3.7/lib"
export CPPFLAGS="-I/usr/local/opt/protobuf@3.7/include"
编辑项目源目录中的 init.py 文件
import pymysql
pymysql.install_as_MySQLdb()
使用anaconda
安装mysqlclient
非常simple and straight forward
。
conda install -c bioconda mysqlclient
然后,使用 pip 安装pymysql
。
pip install pymysql
我在 Windows 中使用 python 3。 我也遇到过这个问题。 我刚刚卸载了“mysqlclient”,然后再次安装。 它以某种方式起作用
即使使用与 python 3 兼容的mysqlclient
库,我最近也遇到了这个问题,并设法解决了我的问题,尽管方式有点非正统。 如果您使用的是 MySQL 8,请尝试一下,看看是否有帮助! :)
我只是复制了位于我最新安装的 MySQL 8.0.13 中的libmysqlclient.21.dylib
文件,该文件位于/usr/local/mysql/lib
中,并将该副本以相同的名称移动到/usr/lib
。
您将需要在您的 mac 上暂时禁用安全完整性保护,但要执行此操作,因为您将无法或无法更改/usr/lib
中任何内容的权限而不禁用它。 您可以通过启动到恢复系统来执行此操作,单击顶部菜单上的实用程序,然后打开终端并在终端中输入csrutil disable
。 完成此操作后,请记住重新打开安全完整性保护! 与上述过程的唯一区别是您改为运行csrutil enable
。
您可以在此处了解有关如何禁用和启用 macOS 的安全完整性保护的更多信息。
我只需要更新我的项目的依赖项,然后重新启动服务器。
要解决问题,请运行: pip install mysql-connector-python==8.0.23
在 mac 上使用 mysql.connector 版本 8.0.24 时遇到了这个问题(如果代码库相同,那么问题也应该发生在 Windows 中)。 第 51 行的这个文件导入“从 django.db.backends.mysql.base 导入 DatabaseWrapper 作为 MySQLDatabaseWrapper”。 导入的文件有以下代码 14-20(您收到的确切代码和错误是代码的一部分
try:
import MySQLdb as Database
except ImportError as err:
raise ImproperlyConfigured(
'Error loading MySQLdb module.\n'
'Did you install mysqlclient?'
) from err
错误在这里形成。 不知道为什么这个导入在不同版本的 mysql 连接器中不断返回,但 8.0.23 没有导入,所以我恢复到那个版本并且错误消失了......这是你希望继续使用 mysql.connector 的情况。Python。 不确定逻辑以及为什么此错误在过去 5 年内一直存在...
在 CLI 中运行此命令。
pip install mysqlclient
[新]如果不起作用,请尝试pip install mysqlclient
,如果您遇到以下错误
MySQLdb/_mysql.c(29): fatal error C1083: Cannot open include file: 'mysql.h': No such file or directory
然后访问此站点并下载支持的车轮。 现在如何知道支持的车轮。 例如有多个车轮文件,如下所示:
mysqlclient-1.4.6-cp36- cp36m -win_amd64.whl
请参阅粗体版本 cp36,它表示 CPython 版本 3.6 只需安装它,这将解决您的问题。
哦! 现在,如果您遇到另一个问题如何安装轮文件,请参考以下行。
python -m pip install "C:\Users\Abhijit\Downloads\mysqlclient-1.4.6-cp36-cp36m-win_amd64.whl"
受@elad silver 的回答启发(谢谢)。
对于 OSx (Monterey) 这对我有用:
brew install protobuf
export LDFLAGS="${LDFLAGS} -L/usr/local/opt/protobuf/lib"
export CPPFLAGS="${CPPFLAGS} -I/usr/local/opt/protobuf/include"
mysqlclient
pip uninstall mysqlclient
pip install mysqlclient
现在因为 Debian 上的默认 mysql 服务器是 MariaDB。
user@cl1-preprod ~ % mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 39
apt-get install mariadb
不存在。 要安装它,您需要安装此软件包apt-get install mariadb-server
但这只是 mysql 服务器,客户端也需要apt-get install mariadb-client
。
然后pip install mysqlclient
user@cl1-preprod ~ % apt-get remove libmysqlclient-dev python-dev
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Le paquet « libmysqlclient-dev » n'est pas installé, et ne peut donc être supprimé
Le paquet « python-dev » n'est pas installé, et ne peut donc être supprimé
你必须安装mysqlclient。 刚跑
pip 安装mysqlclient
尝试在xampp上启动apache和mysql。 这个对我有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.