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ą.

user3182194
źródło
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ć.

DazWorrall
źródło
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
Edward van Kuik
źródło
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
Doni
źródło
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.

Adventurist
źródło
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
Waseem Akram Malik
źródło
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.

seokhoonlee
źródło
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ć.

Flibertyjibbet
źródło
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
3

Choć @Edward van Kuik „s odpowiedź jest poprawna, to nie uwzględnia się problem z virtualenv v1.7 i wyżej .

W szczególności instalacja python-mysqldbprzez aptna Ubuntu umieść to pod /usr/lib/pythonX.Y/dist-packages, ale ta ścieżka nie jest domyślnie uwzględniona w virtualenv sys.path.

Aby rozwiązać ten problem , powinieneś utworzyć virtualenv z pakietami systemowymi, uruchamiając coś takiego:

virtualenv --system-site-packages .venv

Chen Levy
źródło
0

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

xcode-select --install
chandan kharbanda
źródło
0
yum install MySQL-python.x86_64

pracował dla mnie.

hamed
źródło
0

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

sudo apt-get install libmysqlclient-dev
sudo apt-get install gcc
pip install mysqlclient
DachuanZhao
źródło