关于python:ImportError:没有名为MySQLdb的模块

ImportError: No module named MySQLdb

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

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

1
ImportError: No module named MySQLdb

当我执行时

1
http://127.0.0.1:5000/testdb

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

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

请帮忙。可能是什么导致了这个。


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

只需pip install pymysql并切换您的sqlachemy uri,如下所示:

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

还有一些其他的司机你也可以试试。


或者试试这个:

1
apt-get install python-mysqldb


我的问题是:

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

我的决心是:

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

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


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

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

执行上面的命令时,我得到了"No module named MySQLdb错误"。为了解决这个问题,我安装了mysql-python模块,并解决了这个问题。

1
sudo pip install mysql-python


你可以试试吗?

1
pip install mysqlclient


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

如果您使用的是python 3,@dazworrall答案对我来说很有效。

但是,如果您使用的是python 2,那么应该

1
sudo pip install mysql-python

它将安装"mysqldb"模块,而不必更改sqlachemy uri。


所以我花了大约5个小时试图解决这个问题

1
./manage.py makemigrations

有了Ubuntu服务器LTS 16.1,一个完整的灯栈,Apache2 MySQL5.7php 7 python 3和Django1.10.2,我真的很难找到一个好的答案。事实上,我还是不满意,但唯一对我有用的解决办法是…

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

然后(从虚拟环境内部)

1
pip install mysqlclient

我真的不喜欢在我试图设置新的Web服务器时使用dev安装,但不幸的是,这个配置是我可以采用的唯一最舒适的方式。


虽然@edward van kuik的答案是正确的,但它没有考虑到virtualenv v1.7及更高版本的问题。

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

因此,要解决这个问题,您应该通过运行以下类似的程序,使用系统包创建virtualenv:

virtualenv --system-site-packages .venv


1
yum install MySQL-python.x86_64

为我工作。


有那么多与权限相关的错误。你可以试试这个:

1
xcode-select --install