ImportError: nenhum módulo chamado MySQLdb

124

Refiro-me ao tutorial a seguir para criar uma página de login para meu aplicativo da web. http://code.tutsplus.com/tutorials/intro-to-flask-signing-in-and-out--net-29982

Estou tendo problemas com o banco de dados. Estou recebendo um

ImportError: No module named MySQLdb

quando executo

http://127.0.0.1:5000/testdb

Eu tentei todas as maneiras possíveis de instalar o python mysql, o mencionado no tutorial, easy_install, sudo apt-get install.

Eu instalei o mysql no meu ambiente virtual. Minha estrutura de diretórios é igual à explicada no tutorial. O módulo foi instalado com sucesso no meu sistema e ainda estou recebendo este erro.

Por favor ajude. O que poderia estar causando isso.

user3182194
fonte
Você instalou o MySQL, mas instalou o pacote MySQLdb para Python?
FFisegydd
Eu usei o sudo apt-get install mysql-python. Quando usei pip i obteve o erro Ambiente para mysql_config
user3182194
O mysql está instalado dentro do meu ambiente virtual e está funcionando corretamente e o mysqldb também foi instalado.
user3182194

Respostas:

277

Se você estiver com problemas para compilar a extensão binária ou em uma plataforma onde não pode, tente usar as PyMySQLligações python puras .

Simplesmente pip install pymysqlmude seu URI SQLAlchemy para começar assim:

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

Existem alguns outros drivers que você também pode tentar.

DazWorrall
fonte
Perdi alguma coisa? Por que isso não está listado aqui? Especificamente esse nome de dialeto: docs.sqlalchemy.org/en/latest/core/engines.html . Isso foi exatamente o que eu estava errado, obrigado.
precisa saber é o seguinte
Observe a db uri é um pouco dependente do conector que você usar :)
Braden Holt
isso não funcionou com python2.7. * para mim. uso de pip install MySQL-pythontrabalhado.
Rahul Goyal 29/11
1
este ajudou muito enquanto procurava uma solução para erros flask-sqlalchemy. Eu enfrentei: 1. Erro ao executar o aplicativo WSGI ModuleNotFoundError: Nenhum módulo chamado 'MySQLdb' 2. (_mysql_exceptions.OperationalError) (2006, 'Erro de conexão SSL: SSL_CTX_set_tmp_dh falhou') (Histórico deste erro em: sqlalche.me/e/e3q8 ) muito obrigado e espero que outras pessoas encontrem esta solução com essas descrições de erro mais rapidamente do que eu fiz!
ben
Trabalhado no CentOS, parece ser a resposta mais não dependente do SO. Obrigado!
trpt4him
94

Ou tente o seguinte:

apt-get install python-mysqldb
Edward van Kuik
fonte
9
Acho que a resposta à pergunta é esta
codersofthedark
1
python-mysqldb tem algumas dependências, como biblioteca de VC ++ e às vezes não funciona em 64 bits do sistema operacional
Nima Soroush
1
Isso funcionou para mim também. Ubuntu 16.04 com python 2.7
genepool99
Para aquelas pessoas que esta resposta não resolveu seu problema isso pode ser devido a um problema virtualenv ver: stackoverflow.com/a/43984484
Chen Levy
Mais precisamente:sudo apt-get install python-mysqldb
Tina J
24

você pode tentar

pip install mysqlclient
Doni
fonte
2
Funciona para mim em python 3.7.3
nsssayom 06/10/19
1
Obrigado por compartilhar, funcionou quando eu estava usando o Windows, mas tive alguns problemas com mysqlclient( OSError: mysql_config not found) quando estava tentando executar o mesmo aplicativo no Ubuntu, a resposta aceita o resolveu.
Bilal
Funciona no OSX com anaconda e python 3.7.6
Saaru Lindestøkke
16

Meu problema é:

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

e minha resolução:

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

bem no começo, eu acabei de instalar o MySQL-python, mas o problema ainda existia. Então eu acho que se esse problema aconteceu, você também deve levar o mysql-devel em consideração. Espero que isto ajude.

Adventurist
fonte
2
pip install MySQL-pythonsim, isso é o bilhete
Kirby
Isso depende das bibliotecas do Microsoft Visual C ++ em ambientes Windows
Erizo
15

Eu peguei esse problema quando estava trabalhando no SQLAlchemy. O dialeto padrão usado pelo SQLAlchemy para MySQL é mysql+mysqldb.

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

Eu recebi o No module named MySQLdberro " " quando o comando acima foi executado. Para corrigi-lo, instalei o mysql-pythonmódulo e o problema foi corrigido.

sudo pip install mysql-python
Waseem Akram Malik
fonte
3
Antes de instalar o mysql-python, você ainda precisa instalar o mysql ou algo que contenha o comando msyql_config.
Mx1
8

Depende da versão do Python também na minha experiência.

Se você estiver usando Python 3, a resposta @DazWorrall funcionou bem para mim.

No entanto, se você estiver usando o Python 2, deverá

sudo pip install mysql-python

que instalaria o módulo 'MySQLdb' sem precisar alterar o URI SQLAlchemy.

seokhoonlee
fonte
2
Se alguém estiver aqui embaixo e obtendo um erro de ambiente: o mysql_config não foi encontrado, então o sudo apt-get install libmysqlclient-dev pode ajudá-lo. Resposta original: stackoverflow.com/a/5178698/2190689
ssi-anik
Se você receber o tipo de erro do analisador de configuração, poderá ver isso. stackoverflow.com/a/23978968/2190689
ssi-anik
7

Passei cerca de 5 horas tentando descobrir como lidar com esse problema ao tentar executar

./manage.py makemigrations

Com o Ubuntu Server LTS 16.1, uma pilha LAMP completa, o Apache2 MySql 5.7 PHP 7 Python 3 e o Django 1.10.2 eu realmente lutei para encontrar uma boa resposta para isso. Na verdade, ainda não estou satisfeito, mas a ÚNICA solução que funcionou para mim é esta ...

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

seguido por (de dentro do ambiente virtual)

pip install mysqlclient

Eu realmente não gosto de usar as instalações de desenvolvimento quando estou tentando configurar um novo servidor Web, mas infelizmente essa configuração foi o único caminho mais confortável que eu poderia seguir.

Flibertyjibbet
fonte
Se você não possui pacotes '-dev' e um compilador, não poderá instalar nenhum módulo Python que possua um componente de extensão C que precise ser compilado. Sua única opção seria usar uma caixa de compilação separada com bits extras e criar arquivos de roda Python. Em seguida, copie as rodas para o sistema de destino e instale os pacotes a partir das rodas.
Graham Dumpleton
3

Enquanto @Edward van Kuik 's resposta está correta, ele não leva em conta um problema com v1.7 virtualenv e acima .

Em particular, a instalação python-mysqldbvia aptUbuntu coloca-a em baixo /usr/lib/pythonX.Y/dist-packages, mas esse caminho não é incluído por padrão nos virtualenv's sys.path.

Portanto, para resolver isso , você deve criar seu virtualenv com pacotes do sistema executando algo como:

virtualenv --system-site-packages .venv

Chen Levy
fonte
0

Tenho tantos erros relacionados a permissões e quais não. Você pode tentar o seguinte:

xcode-select --install
chandan kharbanda
fonte
0
yum install MySQL-python.x86_64

trabalhou para mim.

odiado
fonte
0

No ubuntu 20, você pode tentar o seguinte:

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