ImportError: Brak modułu o nazwie MySQLdb


125

Odnoszę się do następującego samouczka, aby utworzyć stronę logowania do mojej aplikacji internetowej. http://code.tutsplus.com/tutorials/intro-to-flask-signing-in-and-out--net-29982

Mam problem z bazą danych. Dostaję

ImportError: No module named MySQLdb

kiedy wykonuję

http://127.0.0.1:5000/testdb

Wypróbowałem wszystkie możliwe sposoby instalacji pythona mysql, wspomnianego w samouczku, easy_install, sudo apt-get install.

Zainstalowałem mysql w moim wirtualnym env. Moja struktura katalogów jest taka sama, jak wyjaśniono w samouczku. Moduł został pomyślnie zainstalowany w moim systemie i nadal otrzymuję ten błąd.

Proszę pomóż. Co może być tego przyczyną.


Zainstalowałeś MySQL, ale czy zainstalowałeś pakiet MySQLdb dla Pythona?
Ffisegydd

Użyłem sudo apt-get install mysql-python. Kiedy użyłem pip, otrzymałem błąd środowiska dla mysql_config
user3182194

mysql jest zainstalowany w moim środowisku wirtualnym i działa poprawnie, a także mysqldb.
user3182194

Odpowiedzi:


278

Jeśli masz problemy z kompilacją rozszerzenia binarnego lub na platformie, na której nie możesz, możesz spróbować użyć czystych PyMySQLpowiązań Pythona .

Po prostu pip install pymysqlzmień identyfikator URI SQLAlchemy, aby rozpocząć w ten sposób:

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

Istnieje kilka innych sterowników, które możesz wypróbować.


Przegapiłem coś? Dlaczego nie ma tego tutaj na liście? W szczególności ta nazwa dialektu: docs.sqlalchemy.org/en/latest/core/engines.html . To było dokładnie to, co pomyliłem się, dzięki.
CashIsClay

Zauważ, że db uri jest w pewnym stopniu zależne od używanego złącza :)
Braden Holt,

to nie zadziałało z python2.7. * dla mnie. wykorzystanie pip install MySQL-pythonprzetworzonych.
Rahul Goyal

1
ten pomógł tak bardzo podczas poszukiwania rozwiązania dla błędów flask-sqlalchemy. I w obliczu: 1. Błąd działa WSGI aplikacji ModuleNotFoundError: No moduł o nazwie 'MySQLdb' 2. (_mysql_exceptions.OperationalError) (2006, 'Błąd połączenia SSL: SSL_CTX_set_tmp_dh failed') (w tle tego błędu w: sqlalche.me/e/e3q8 ) bardzo dziękuję i mam nadzieję, że inni szybciej znajdą to rozwiązanie z tymi opisami błędów tak jak ja!
Ben

Praca na CentOS wydaje się być odpowiedzią najbardziej niezależną od systemu operacyjnego. Dzięki!
trpt4him

94

Lub spróbuj tego:

apt-get install python-mysqldb

9
Myślę, że odpowiedź na to pytanie jest taka
codersofthedark

1
python-mysqldb ma pewne zależności, takie jak biblioteka VC ++ i czasami nie działa na 64-bitowym systemie operacyjnym
Nima Soroush

1
Dla mnie to też zadziałało. Ubuntu 16.04 z
Pythonem

Dla osób, dla których ta odpowiedź nie rozwiązała ich problemu, może to być spowodowane problemem z virtualenv, patrz: stackoverflow.com/a/43984484
Chen Levy

Dokładniej:sudo apt-get install python-mysqldb
Tina J

25

możesz spróbować

pip install mysqlclient

2
Działa dla mnie na Pythonie 3.7.3
nsssayom

1
Dzięki za udostępnienie, działało, gdy korzystałem z systemu Windows, ale miałem pewne problemy z mysqlclient( OSError: mysql_config not found), gdy próbowałem uruchomić tę samą aplikację na Ubuntu, zaakceptowana odpowiedź rozwiązała problem.
Bilal

Działa na OSX z
anacondą i pythonem

17

Mój problem to:

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

i moja rezolucja:

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

na samym początku właśnie zainstalowałem MySQL-python, ale problem nadal istniał. Więc myślę, że jeśli ten problem się wydarzył, powinieneś również wziąć pod uwagę mysql-devel. Mam nadzieję że to pomoże.


3
pip install MySQL-pythontak, to jest bilet
Kirby

Zależy to od bibliotek Microsoft Visual C ++ w środowiskach Windows
Erizo,

15

Ten problem wystąpił podczas pracy nad SQLAlchemy. Domyślnym dialektem używanym przez SQLAlchemy dla MySQL jest mysql+mysqldb.

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

Otrzymałem No module named MySQLdbbłąd „ ” po wykonaniu powyższej komendy. Aby to naprawić, zainstalowałem mysql-pythonmoduł i problem został naprawiony.

sudo pip install mysql-python

3
przed zainstalowaniem mysql-python nadal musisz zainstalować mysql lub coś, co zawiera polecenie msyql_config.
mxi1

8

Z mojego doświadczenia zależy również od wersji Pythona.

Jeśli używasz Pythona 3, odpowiedź @DazWorrall działała dobrze.

Jeśli jednak używasz Pythona 2, powinieneś

sudo pip install mysql-python

który zainstalowałby moduł „MySQLdb” bez konieczności zmiany identyfikatora URI SQLAlchemy.


2
Jeśli ktoś tu jest i pojawia się błąd środowiska: mysql_config nie znalazł czegoś w rodzaju, to sudo apt-get install libmysqlclient-dev może ci pomóc. Oryginalna odpowiedź: stackoverflow.com/a/5178698/2190689
ssi-anik

Jeśli otrzymujesz błąd typu parsera konfiguracji, możesz spojrzeć na to. stackoverflow.com/a/23978968/2190689
ssi-anik

7

Więc spędziłem około 5 godzin, próbując dowiedzieć się, jak poradzić sobie z tym problemem, próbując biegać

./manage.py makemigrations

W przypadku Ubuntu Server LTS 16.1, pełnego stosu LAMP, Apache2 MySql 5.7 PHP 7 Python 3 i Django 1.10.2 naprawdę starałem się znaleźć dobrą odpowiedź na to pytanie. Właściwie nadal nie jestem usatysfakcjonowany, ale JEDYNYM rozwiązaniem, które działało dla mnie, jest to ...

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

a następnie (z wnętrza środowiska wirtualnego)

pip install mysqlclient

Naprawdę nie podoba mi się konieczność korzystania z instalacji deweloperskich, gdy próbuję skonfigurować nowy serwer WWW, ale niestety ta konfiguracja była jedyną najbardziej wygodną ścieżką, jaką mogłem wybrać.


Jeśli nie masz pakietów „-dev” i kompilatora, nie możesz zainstalować żadnego modułu Pythona, który ma składnik rozszerzenia C, który należy skompilować. Jedyną opcją byłoby użycie oddzielnego okna kompilacji, które ma dodatkowe bity i budowanie plików kół Pythona. Następnie skopiuj koła do systemu docelowego i zainstaluj pakiety z kół.
Graham Dumpleton


0

Mam tak wiele błędów związanych z uprawnieniami, a co nie. Możesz spróbować tego:

xcode-select --install


0

W Ubuntu 20 możesz spróbować tego:

sudo apt-get install libmysqlclient-dev
sudo apt-get install gcc
pip install mysqlclient
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.