ImportError: Kein Modul namens MySQLdb

124

Ich beziehe mich auf das folgende Tutorial, um eine Anmeldeseite für meine Webanwendung zu erstellen. http://code.tutsplus.com/tutorials/intro-to-flask-signing-in-and-out--net-29982

Ich habe ein Problem mit der Datenbank. Ich bekomme eine

ImportError: No module named MySQLdb

wenn ich ausführe

http://127.0.0.1:5000/testdb

Ich habe alle möglichen Möglichkeiten ausprobiert, um Python MySQL zu installieren, die im Tutorial easy_install, sudo apt-get install erwähnt wird.

Ich habe MySQL in meiner virtuellen Umgebung installiert. Meine Verzeichnisstruktur entspricht genau der im Tutorial erläuterten. Das Modul wurde erfolgreich in meinem System installiert und ich erhalte immer noch diesen Fehler.

Bitte helfen Sie. Was könnte das verursachen?

user3182194
quelle
Sie haben MySQL installiert, aber das MySQLdb- Paket für Python installiert ?
Ffisegydd
Ich habe sudo apt-get install mysql-python verwendet. Als ich pip benutzte, bekam ich einen Umgebungsfehler für mysql_config
user3182194
mysql ist in meiner virtuellen Umgebung installiert und funktioniert ordnungsgemäß. mysqldb wurde ebenfalls installiert.
user3182194

Antworten:

277

Wenn Sie Probleme beim Kompilieren der Binärerweiterung haben oder auf einer Plattform, auf der Sie nicht können, können Sie versuchen, die reinen Python- PyMySQLBindungen zu verwenden.

pip install pymysqlSchalten Sie einfach Ihren SQLAlchemy-URI so um, dass er wie folgt beginnt:

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

Es gibt einige andere Treiber, die Sie ebenfalls ausprobieren können.

DazWorrall
quelle
Habe ich etwas verpasst? Warum ist das hier nicht aufgeführt? Speziell dieser Dialektname: docs.sqlalchemy.org/en/latest/core/engines.html . Dies war genau das, was ich falsch gemacht habe, danke.
CashIsClay
Beachten Sie, dass die Datenbank etwas von dem verwendeten Anschluss abhängt :)
Braden Holt
Dies funktionierte mit Python2.7. * für mich nicht. Verwendung von pip install MySQL-pythongearbeitet.
Rahul Goyal
1
Dieser hat sehr geholfen, als er nach einer Lösung für Fehler in der Kolben-SQLalchemie gesucht hat. Ich hatte folgende Probleme: 1. Fehler beim Ausführen der WSGI-Anwendung ModuleNotFoundError: Kein Modul mit dem Namen 'MySQLdb' 2. (_mysql_exceptions.OperationalError) (2006, 'SSL-Verbindungsfehler: SSL_CTX_set_tmp_dh fehlgeschlagen') (Hintergrund zu diesem Fehler unter: sqlalche.me/e/e3q8 ) Vielen Dank und ich hoffe, dass andere diese Lösung mit diesen Fehlerbeschreibungen schneller finden als ich!
Ben
Arbeitete unter CentOS und scheint die am wenigsten vom Betriebssystem abhängige Antwort zu sein. Vielen Dank!
trpt4him
94

Oder versuchen Sie Folgendes:

apt-get install python-mysqldb
Edward van Kuik
quelle
9
Ich denke, die Antwort auf die Frage lautet
codersofthedark
1
Python-Mysqldb hat einige Abhängigkeiten wie VC ++ Bibliothek und funktioniert manchmal nicht auf 64-Bit-Betriebssystem
Nima Soroush
1
Das hat auch bei mir funktioniert. Ubuntu 16.04 mit Python 2.7
Genepool99
Für diejenigen Personen, die diese Antwort ihr Problem nicht gelöst haben, könnte dies auf ein virtuelles Problem zurückzuführen sein, siehe: stackoverflow.com/a/43984484
Chen Levy
Genauer gesagt:sudo apt-get install python-mysqldb
Tina J
24

darfst du es versuchen

pip install mysqlclient
Doni
quelle
2
Funktioniert für mich auf Python 3.7.3
Nsssayom
1
Vielen Dank für das Teilen. Es hat funktioniert, als ich Windows verwendet habe, aber ich hatte einige Probleme mit mysqlclient( OSError: mysql_config not found), als ich versuchte, dieselbe App unter Ubuntu auszuführen. Die akzeptierte Antwort hat es gelöst.
Bilal
Funktioniert unter OSX mit Anaconda und Python 3.7.6
Saaru Lindestøkke
16

Mein Problem ist:

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

und mein Vorsatz:

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

Ganz am Anfang habe ich gerade MySQL-Python installiert, aber das Problem bestand immer noch. Wenn dieses Problem auftritt, sollten Sie auch mysql-devel berücksichtigen. Hoffe das hilft.

Abenteurer
quelle
2
pip install MySQL-pythonJa, das ist das Ticket
Kirby
Dies hängt von Microsoft Visual C ++ - Bibliotheken in Windows-Umgebungen ab
Erizo,
15

Ich habe dieses Problem bekommen, als ich an SQLAlchemy gearbeitet habe. Der von SQLAlchemy für MySQL verwendete Standarddialekt ist mysql+mysqldb.

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

Ich habe den No module named MySQLdbFehler " " erhalten, als der obige Befehl ausgeführt wurde. Um mysql-pythondas Problem zu beheben, habe ich das Modul installiert und das Problem wurde behoben.

sudo pip install mysql-python
Waseem Akram Malik
quelle
3
Bevor Sie mysql-python installieren, müssen Sie noch mysql oder etwas installieren, das den Befehl msyql_config enthält.
mxi1
8

Es hängt meiner Erfahrung nach auch von der Python-Version ab.

Wenn Sie Python 3 verwenden, hat die Antwort von @DazWorrall für mich gut funktioniert.

Wenn Sie jedoch Python 2 verwenden, sollten Sie dies tun

sudo pip install mysql-python

Dies würde das 'MySQLdb'-Modul installieren, ohne den SQLAlchemy-URI ändern zu müssen.

Seokhoonlee
quelle
2
Wenn jemand hier unten ist und einen Umgebungsfehler erhält: mysql_config wurde nicht gefunden, dann kann sudo apt-get install libmysqlclient-dev Ihnen helfen. Ursprüngliche Antwort: stackoverflow.com/a/5178698/2190689
ssi-anik
Wenn Sie einen Fehler vom Typ Konfigurationsparser erhalten, können Sie sich dies ansehen. stackoverflow.com/a/23978968/2190689
ssi-anik
7

Ich habe ungefähr 5 Stunden damit verbracht, herauszufinden, wie ich mit diesem Problem umgehen soll, wenn ich versuche, es auszuführen

./manage.py makemigrations

Mit Ubuntu Server LTS 16.1, einem vollständigen LAMP-Stack, Apache2 MySql 5.7 PHP 7 Python 3 und Django 1.10.2 hatte ich wirklich Mühe, eine gute Antwort darauf zu finden. Tatsächlich bin ich immer noch nicht zufrieden, aber die EINZIGE Lösung, die für mich funktioniert hat, ist diese ...

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

gefolgt von (aus der virtuellen Umgebung)

pip install mysqlclient

Ich mag es wirklich nicht, Dev-Installationen verwenden zu müssen, wenn ich versuche, einen neuen Webserver einzurichten, aber leider war diese Konfiguration der einzig bequeme Weg, den ich einschlagen konnte.

Flibertyjibbet
quelle
Wenn Sie keine '-dev'-Pakete und keinen Compiler haben, können Sie kein Python-Modul installieren, das eine C-Erweiterungskomponente enthält, die kompiliert werden muss. Ihre einzige Möglichkeit wäre, eine separate Build-Box zu verwenden, die die zusätzlichen Bits enthält, und Python-Raddateien zu erstellen. Kopieren Sie dann die Räder auf Ihr Zielsystem und installieren Sie stattdessen die Pakete von den Rädern.
Graham Dumpleton
3

Während @Edward van Kuik ‚s Antwort richtig ist, dauert es nicht berücksichtigt ein Problem mit virtualenv v1.7 und höher .

Insbesondere bei der Installation python-mysqldbüber aptUbuntu wird es unter gestellt /usr/lib/pythonX.Y/dist-packages, aber dieser Pfad ist standardmäßig nicht in den virtuellen Umgebungen enthalten sys.path.

Also dieses Problem zu beheben , sollten Sie Ihre virtualenv mit Systempakete erstellen , indem Sie wie etwas ausgeführt wird :

virtualenv --system-site-packages .venv

Chen Levy
quelle
0

Ich habe so viele Fehler im Zusammenhang mit Berechtigungen und was nicht. Sie können dies versuchen:

xcode-select --install
Chandan Kharbanda
quelle
0
yum install MySQL-python.x86_64

arbeitete für mich.

beschämt
quelle
0

In Ubuntu 20 können Sie Folgendes versuchen:

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