【问题标题】:Error loading MySQLdb Module 'Did you install mysqlclient or MySQL-python?'加载 MySQLdb 模块时出错“您安装了 mysqlclient 还是 MySQL-python?”
【发布时间】:2018-04-04 18:27:09
【问题描述】:

我正在为一个使用 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?

我知道此类问题已经存在,但似乎没有一种解决方案对尝试产生任何影响。提前谢谢你。

【问题讨论】:

标签: python mysql django phpmyadmin


【解决方案1】:
pip install pymysql

然后,编辑项目源目录中的 __init__.py 文件(与 settings.py 相同)

添加:

import pymysql

pymysql.install_as_MySQLdb()

【讨论】:

  • 嘿,谢谢,这对我有用,我在 init.py 的顶部添加了你的代码我想知道为什么它需要这个:(
  • 在django后端,它使用名为“MySQLdb”的模块作为mysql后端。在函数“install_as_MySQLdb()”中,您可以看到“ sys.modules["MySQLdb"] = sys.modules["_mysql"] = sys.modules["pymysql"] ”,其中 pymysql 使自己指示“MySQLdb”所以django 工作
  • 错误:django.core.exceptions.ImproperlyConfigured:需要 mysqlclient 1.3.13 或更新版本;你有 0.9.3。
  • 我在尝试使用 PyMySQL 工作区时遇到了与 @ox 相同的错误(PyMySQL 的最新当前版本是 0.9.3)。我安装了 mysqlclient 1.4.2.post1 但 django 似乎没有看到它,还有 PyMySQL 0.9.3 但是当我将 django 配置为使用它而不是 mysqlclient 我得到版本错误。
  • 我使用 mysqlclient 而不是 pymysql 因为 pymysql 会导致错误。
【解决方案2】:

迁移到 python 3 后遇到同样的问题。显然,MySQL-python 不兼容,所以按照官方django docs,在 Mac 上使用pip install mysqlclient 安装了mysqlclient。请注意,文档中提到了一些特定于操作系统的问题。

引用docs:

先决条件

您可能需要像这样安装 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 / CentOS

关于 MySQL Connector/C 在 macOS 上的 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 中固定版本以避免尝试安装最新的源包。

从源代码安装

  1. 通过git clonezipfile下载源代码。
  2. 自定义site.cfg
  3. python setup.py install

【讨论】:

  • 这行得通。对于使用 Ubuntu 的我来说,只需 sudo apt-get install python-dev default-libmysqlclient-dev 然后 sudo apt-get install python3-dev 然后 pip install --force-reinstall --ignore-installed --no-binary :all: mysqlclient 就可以了。
  • @rahmatns 你是个救世主……非常感谢你的评论。在我的 docker 容器中工作正常
【解决方案3】:

对于点子

pip install pymysql

对于 pip3 你应该使用

python3 -m pip install PyMySQL

然后,编辑项目源目录中的 init.py 文件(与 settings.py 相同)。添加:

import pymysql

pymysql.install_as_MySQLdb()

【讨论】:

  • 这适用于 amazon linux 2,但我也安装了一些其他软件包。
  • 在我的情况下不适用于 python,但可以使用 python3 谢谢!
【解决方案4】:

使用以下命令解决您的问题,

pip install mysql-python
apt-get install python3-mysqldb libmysqlclient-dev python-dev

在 Debian 上工作

【讨论】:

  • 无用的评论。 MySQL-python lib 不支持 Python 3.x,mysqlclient 应该是 py3 和 py2 的适当替代品,但不幸的是,当 mysqlclient 已经安装时,有时你会从 Django 获得 Did you install mysqlclient?。这才是真正的问题。
  • @mega.venik 不是没用,+1 可以解决我的问题。
【解决方案5】:

这个命令在上面@Aniket Sinha 的回答中起到了作用:

pip install mysqlclient

【讨论】:

  • 在此之前我需要运行 sudo apt-get install libmysqlclient-dev python-dev 才能使其工作。
【解决方案6】:

如果您已经安装了mysqlclient(即您看到了Requirement already satisfied)并且正在获得Error loading MySQLdb Module,那么以下对我有用:

  1. pip uninstall mysqlclient
  2. export LDFLAGS="-L/usr/local/opt/openssl/lib"export CPPFLAGS="-I/usr/local/opt/openssl/include" 解释为 here
  3. pip install mysqlclient

这会重新安装 mysqlclient 并且无论出于何种原因解决了我的问题。

【讨论】:

    【解决方案7】:

    对于 MAC 操作系统用户:

    我多次遇到这个问题。这里的关键是在通过pip命令安装mysqlclient之前设置好这些环境变量。就我而言,它们如下所示:

    export LDFLAGS="-L/usr/local/opt/protobuf@3.7/lib"
    export CPPFLAGS="-I/usr/local/opt/protobuf@3.7/include"
    

    【讨论】:

    • 工作但有更正:export LDFLAGS="-L/usr/local/opt/protobuf/lib" AND export CPPFLAGS="-I/usr/local/opt/protobuf/include"
    【解决方案8】:

    编辑项目源目录中的 init.py 文件

    import pymysql
    
    pymysql.install_as_MySQLdb()
    

    【讨论】:

      【解决方案9】:

      使用anaconda 安装mysqlclient 非常漂亮simple and straight forward

      conda install -c bioconda mysqlclient
      

      然后,使用 pip 安装 pymysql

      pip install pymysql
      

      学习愉快..

      【讨论】:

        【解决方案10】:

        我在 Windows 中使用 python 3。 我也遇到过这个问题。我刚刚卸载了“mysqlclient”,然后再次安装。 它以某种方式起作用

        【讨论】:

          【解决方案11】:

          即使使用兼容 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 的安全完整性保护here

          【讨论】:

            【解决方案12】:

            我只需要更新我的项目的依赖关系,然后重新启动服务器。

            【讨论】:

              【解决方案13】:

              解决问题运行:pip install mysql-connector-python==8.0.23

              在 mac 上使用 mysql.connector 版本 8.0.24 时遇到了这个问题(如果代码库相同,那么问题也应该发生在 windows 中)。第 51 行的This file 导入“从 django.db.backends.mysql.base 导入 DatabaseWrapper 作为 MySQLDatabaseWrapper”。 imported file 具有以下代码 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 年内一直存在...

              【讨论】:

                【解决方案14】:

                在 CLI 中运行此命令。

                pip install mysqlclient
                

                【讨论】:

                  【解决方案15】:

                  [新] 试试pip install mysqlclient 如果不工作,如果你得到以下错误

                  MySQLdb/_mysql.c(29): fatal error C1083: Cannot open include file: 'mysql.h': No such file or directory
                  

                  然后访问this 站点并下载支持的滚轮。 现在如何知道支持的车轮。例如有多个轮子文件,如下所示:

                  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"
                  

                  【讨论】:

                  • 这实际上解决了我的问题。
                  猜你喜欢
                  • 2018-09-28
                  • 2019-12-15
                  • 2020-11-30
                  • 2017-10-20
                  • 2018-12-25
                  • 2021-04-08
                  • 2017-08-11
                  • 2014-12-21
                  • 2016-04-06
                  相关资源
                  最近更新 更多