ImportError:没有名为MySQLdb的模块


124

我指的是以下教程来为我的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软件包?
Ffisegydd 2014年

我使用sudo apt-get install mysql-python。当我使用pip时,出现mysql_config的环境错误
user3182194 2014年

mysql已安装在我的虚拟环境中并且可以正常工作,并且mysqldb也已安装。
user3182194 2014年

Answers:


277

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

只需pip install pymysql切换您的SQLAlchemy URI即可,如下所示:

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

您还可以尝试其他一些驱动程序


我错过了什么?为什么这里没有列出?具体而言,该方言名称:docs.sqlalchemy.org/en/latest/core/engines.html。不过,这正是我错了,谢谢。
CashIsClay18年

请注意,db uri在某种程度上取决于您使用的连接器:)
Braden Holt,

对我来说,这不适用于python2.7。*。使用pip install MySQL-python工作。
拉胡尔·戈亚尔

1
在寻找解决flask-sqlalchemy错误的解决方案时,这一功能大有帮助。我遇到了:1.运行WSGI应用程序时发生错误ModuleNotFoundError:没有名为“ MySQLdb”的模块2.(_mysql_exceptions.OperationalError)(2006,“ SSL连接错误:SSL_CTX_set_tmp_dh失败”)(此错误的背景位于:sqlalche.me/e/e3q8)非常感谢,我希望其他人能像我一样更快地找到带有此错误描述的解决方案!

在CentOS上工作,似乎是最不依赖OS的答案。谢谢!
trpt4him

94

或尝试以下方法:

apt-get install python-mysqldb

9
我认为问题的答案是
codersofthedark 2014年

1
python-mysqldb具有某些依赖性,例如VC ++库,有时在64位操作系统上不起作用
Nima Soroush

1
这也对我有用。带有python 2.7的Ubuntu 16.04
genepool99

对于那些无法解决其问题的人,这可能是由于virtualenv问题引起的:stackoverflow.com/a/43984484
Chen Levy

更准确地说:sudo apt-get install python-mysqldb
Tina J

24

你可以尝试

pip install mysqlclient

2
适用于我的python 3.7.3
nsssayom,

1
感谢您的分享,当我使用Windows时它可以工作,但是当我尝试在Ubuntu上运行相同的应用程序时,我在mysqlclientOSError: mysql_config not found)上遇到了一些问题,可以接受的答案解决了它。
Bilal

可在OSX上使用anaconda和python 3.7.6
SaaruLindestøkke

16

我的问题是:

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

和我的决议:

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

在开始的时候,我刚刚安装了MySQL-python,但是问题仍然存在。因此,我认为如果发生此问题,您还应该考虑mysql-devel。希望这可以帮助。


2
pip install MySQL-python是的,那是门票
Kirby

这取决于Windows环境中的Microsoft Visual C ++库
Erizo

15

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

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

No module named MySQLdb执行上述命令时出现“ ”错误。要修复它,我安装了mysql-python模块,此问题已解决。

sudo pip install mysql-python

3
在安装mysql-python之前,您仍然需要安装mysql或包含msyql_config命令的内容。
mxi1

8

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

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

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

sudo pip install mysql-python

这将安装“ MySQLdb”模块,而无需更改SQLAlchemy URI。


2
如果有人在这里,并且遇到环境错误:mysql_config找不到,那么sudo apt-get install libmysqlclient-dev可以为您提供帮助。原始答案:stackoverflow.com/a/5178698/2190689
ssi-anik

如果您得到错误的配置解析器类型,则可以查看一下。stackoverflow.com/a/23978968/2190689
ssi-anik

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 install,但是不幸的是,这种配置是我唯一可以采用的舒适方式。


如果您没有'-dev'软件包和编译器,则无法安装任何具有C扩展组件需要编译的Python模块。您唯一的选择是使用带有额外位的单独构建框并构建Python wheel文件。然后将轮子复制到目标系统,然后从轮子安装软件包。
Graham Dumpleton '16


0

有太多与权限有关的错误,什么也没有。您可能想试试这个:

xcode-select --install


0

在ubuntu 20中,您可以尝试以下操作:

sudo apt-get install libmysqlclient-dev
sudo apt-get install gcc
pip install mysqlclient
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.