【问题标题】:ImportError: No module named MySQLdbImportError:没有名为 MySQLdb 的模块
【发布时间】:2014-04-10 17:40:33
【问题描述】:

我正在参考以下教程来为我的 Web 应用程序创建一个登录页面。 http://code.tutsplus.com/tutorials/intro-to-flask-signing-in-and-out--net-29982

我遇到了数据库问题。 我得到一个

ImportError: No module named MySQLdb

当我执行时

http://127.0.0.1:5000/testdb

我已经尝试了所有可能的方法来安装python mysql,教程中提到的一种,easy_install,sudo apt-get install。

我已经在我的虚拟环境中安装了 mysql。我的目录结构与教程中解释的相同。该模块已成功安装在我的系统中,但我仍然收到此错误。

请帮忙。这可能是什么原因造成的。

【问题讨论】:

  • 您已经安装了 MySQL,但您是否安装了 Python 的 MySQLdb 包?
  • 我使用了 sudo apt-get install mysql-python。当我使用 pip 时,我得到了 mysql_config 的环境错误
  • mysql 已安装在我的虚拟环境中并正常工作,并且 mysqldb 也已安装。

标签: python mysql flask sqlalchemy mysql-python


【解决方案1】:

如果您在编译二进制扩展时遇到问题,或者在无法编译的平台上,可以尝试使用纯 python PyMySQL 绑定。

只需 pip install pymysql 并切换您的 SQLAlchemy URI 以像这样开始:

SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://.....'

有一些other drivers你也可以试试。

【讨论】:

  • 我错过了什么吗?为什么这里没有列出?特别是方言名称:docs.sqlalchemy.org/en/latest/core/engines.html。不过,这正是我错了,谢谢。
  • 请注意,db uri 在某种程度上取决于您使用的连接器:)
  • 这对我来说不适用于 python2.7.*。使用pip install MySQL-python 有效。
  • 在寻找flask-sqlalchemy错误的解决方案时,这个帮助很大。我遇到:1. 运行 WSGI 应用程序时出错 ModuleNotFoundError: No module named 'MySQLdb' 2. (_mysql_exceptions.OperationalError) (2006, 'SSL connection error: SSL_CTX_set_tmp_dh failed') (这个错误的背景: sqlalche.me/e/e3q8) 非常感谢很多,我希望其他人能像我一样更快地找到这个错误描述的解决方案!
  • 在 CentOS 上工作,似乎是最不依赖操作系统的答案。谢谢!
【解决方案2】:

或者试试这个:

apt-get install python-mysqldb

【讨论】:

  • 我认为问题的答案是这样的
  • python-mysqldb 有一些依赖项,例如 VC++ 库,有时在 64 位操作系统上不起作用
  • 这对我也有用。带有 python 2.7 的 Ubuntu 16.04
  • 对于那些这个答案没有解决他们的问题的人,这可能是由于 virtualenv 问题,请参阅:stackoverflow.com/a/43984484
  • 更准确地说:sudo apt-get install python-mysqldb
【解决方案3】:

我在研究 SQLAlchemy 时遇到了这个问题。 SQLAlchemy for MySQL 使用的默认方言是mysql+mysqldb

engine = create_engine('mysql+mysqldb://scott:tiger@localhost/foo')

执行上述命令时出现“No module named MySQLdb”错误。为了解决这个问题,我安装了mysql-python 模块,问题就解决了。

sudo pip install mysql-python

【讨论】:

  • 在安装mysql-python之前,还需要安装mysql或者包含msyql_config命令的东西。
【解决方案4】:

我的问题是:

return __import__('MySQLdb')
ImportError: No module named MySQLdb

还有我的决心:

pip install MySQL-python
yum install mysql-devel.x86_64

一开始,我只是安装了 MySQL-python,但问题仍然存在。所以我认为如果发生这个问题,你也应该考虑 mysql-devel 。 希望这会有所帮助。

【讨论】:

  • pip install MySQL-python 是的,就是这张票
  • 这取决于 Windows 环境中的 Microsoft Visual C++ 库
【解决方案5】:

你可以试试

pip install mysqlclient

【讨论】:

  • 在 python 3.7.3 上为我工作
  • 感谢分享,它在我使用 Windows 时有效,但是当我尝试在 Ubuntu 上运行相同的应用程序时,mysqlclient (OSError: mysql_config not found) 遇到了一些问题,接受的答案解决了它.
  • 在 OSX 上运行 anaconda 和 python 3.7.6
【解决方案6】:

根据我的经验,这也取决于 Python 版本。

如果您使用的是 Python 3,@DazWorrall 的回答对我来说效果很好。

但是,如果您使用的是 Python 2,则应该

sudo pip install mysql-python

无需更改 SQLAlchemy URI 即可安装“MySQLdb”模块。

【讨论】:

【解决方案7】:

所以我花了大约 5 个小时试图弄清楚在尝试运行时如何处理这个问题

./manage.py makemigrations

使用 Ubuntu Server LTS 16.1、完整的 LAMP 堆栈、Apache2 MySql 5.7 PHP 7 Python 3 和 Django 1.10.2,我真的很难找到一个好的答案。事实上,我仍然不满意,但唯一对我有用的解决方案就是这个......

sudo apt-get install build-essential python-dev libapache2-mod-wsgi-py3 libmysqlclient-dev

随后(从虚拟环境内部)

pip install mysqlclient

当我尝试设置新的 Web 服务器时,我真的不喜欢必须使用开发安装,但不幸的是,这种配置是我能采取的唯一最舒服的方式。

【讨论】:

  • 如果你没有'-dev'包和编译器,你不能安装任何具有需要编译的C扩展组件的Python模块。您唯一的选择是使用具有额外位的单独构建框并构建 Python 轮文件。然后将轮子复制到您的目标系统并从轮子安装包。
【解决方案8】:

虽然@Edward van Kuikanswer 是正确的,但它没有考虑issue with virtualenv v1.7 and above

特别是在 Ubuntu 上通过apt 安装python-mysqldb 将其放在/usr/lib/pythonX.Y/dist-packages 下,但默认情况下此路径不包含在 virtualenv 的sys.path 中。

所以to resolve this,你应该使用系统包创建你的virtualenv,方法是:

virtualenv --system-site-packages .venv

【讨论】:

    【解决方案9】:

    遇到了很多与权限相关的错误,以及与权限无关的错误。你可能想试试这个:

    xcode-select --install
    

    【讨论】:

      【解决方案10】:
      yum install MySQL-python.x86_64
      

      为我工作。

      【讨论】:

        【解决方案11】:

        在 ubuntu 20 中,你可以试试这个:

        sudo apt-get install libmysqlclient-dev
        sudo apt-get install gcc
        pip install mysqlclient
        

        【讨论】:

          【解决方案12】:

          sudo apt-get install python-mysqldb

          【讨论】:

            猜你喜欢
            • 2018-07-15
            • 2020-04-16
            • 2013-07-11
            • 1970-01-01
            • 2015-08-19
            • 2016-05-11
            • 2016-03-05
            • 2010-11-29
            • 2010-10-02
            相关资源
            最近更新 更多