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.


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.


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

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

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.


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

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.


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.


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


0

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

xcode-select --install

0
yum install MySQL-python.x86_64

trabalhou para mim.


0

No ubuntu 20, você pode tentar o seguinte:

sudo apt-get install libmysqlclient-dev
sudo apt-get install gcc
pip install mysqlclient
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.