O pip install mysql-python falha com EnvironmentError: mysql_config não encontrado

823

Este é o erro que recebo

(mysite)zjm1126@zjm1126-G41MT-S2:~/zjm_test/mysite$ pip install mysql-python
Downloading/unpacking mysql-python
  Downloading MySQL-python-1.2.3.tar.gz (70Kb): 70Kb downloaded
  Running setup.py egg_info for package mysql-python
    sh: mysql_config: not found
    Traceback (most recent call last):
      File "<string>", line 14, in <module>
      File "/home/zjm1126/zjm_test/mysite/build/mysql-python/setup.py", line 15, in <module>
        metadata, options = get_config()
      File "setup_posix.py", line 43, in get_config
        libs = mysql_config("libs_r")
      File "setup_posix.py", line 24, in mysql_config
        raise EnvironmentError("%s not found" % (mysql_config.path,))
    EnvironmentError: mysql_config not found
    Complete output from command python setup.py egg_info:
    sh: mysql_config: not found

Traceback (most recent call last):

  File "<string>", line 14, in <module>

  File "/home/zjm1126/zjm_test/mysite/build/mysql-python/setup.py", line 15, in <module>

    metadata, options = get_config()

  File "setup_posix.py", line 43, in get_config

    libs = mysql_config("libs_r")

  File "setup_posix.py", line 24, in mysql_config

    raise EnvironmentError("%s not found" % (mysql_config.path,))

EnvironmentError: mysql_config not found

----------------------------------------
Command python setup.py egg_info failed with error code 1
Storing complete log in /home/zjm1126/.pip/pip.log
(mysite)zjm1126@zjm1126-G41MT-S2:~/zjm_test/mysite$ pip install mysql-python
Downloading/unpacking mysql-python
  Running setup.py egg_info for package mysql-python
    sh: mysql_config: not found
    Traceback (most recent call last):
      File "<string>", line 14, in <module>
      File "/home/zjm1126/zjm_test/mysite/build/mysql-python/setup.py", line 15, in <module>
        metadata, options = get_config()
      File "setup_posix.py", line 43, in get_config
        libs = mysql_config("libs_r")
      File "setup_posix.py", line 24, in mysql_config
        raise EnvironmentError("%s not found" % (mysql_config.path,))
    EnvironmentError: mysql_config not found
    Complete output from command python setup.py egg_info:
    sh: mysql_config: not found

Traceback (most recent call last):

  File "<string>", line 14, in <module>

  File "/home/zjm1126/zjm_test/mysite/build/mysql-python/setup.py", line 15, in <module>

    metadata, options = get_config()

  File "setup_posix.py", line 43, in get_config

    libs = mysql_config("libs_r")

  File "setup_posix.py", line 24, in mysql_config

    raise EnvironmentError("%s not found" % (mysql_config.path,))

EnvironmentError: mysql_config not found

----------------------------------------
Command python setup.py egg_info failed with error code 1
Storing complete log in /home/zjm1126/.pip/pip.log

O que posso fazer para resolver isso?

zjm1126
fonte
1
Veja este tópico: [mysql_config não encontrado ao instalar a interface do mysqldb python] [1] funcionou para mim :) [1]: stackoverflow.com/questions/7475223/…
Staccato
Estou MAC OS usuário posso resolver este problema Whit esta questão stackoverflow.com/questions/50940302/...
Patricios

Respostas:

1398

Parece que o mysql_config está ausente no seu sistema ou o instalador não conseguiu encontrá-lo. Certifique-se de que o mysql_config esteja realmente instalado.

Por exemplo, no Debian / Ubuntu, você deve instalar o pacote:

sudo apt-get install libmysqlclient-dev

Talvez o mysql_config não esteja no seu caminho, será o caso quando você compilar por si mesmo o pacote mysql.

Atualização: Para versões recentes do debian / ubuntu (a partir de 2018), é

sudo apt install default-libmysqlclient-dev
Fbo
fonte
24
Isso ainda criou um erro para mim. Eu usei em apt-get install python-mysqldbvez disso.
Jonatan Littke
51
minha experiência 2c: sudo apt-get install libmysqlclient-devfuncionou para mim, sudo apt-get install python-mysqldbnão ajudou
Anentropic
20
@JonatanLittke A instalação de um tipo global python-mysqldb vai contra o ponto da virtualenv IMO.
Fncomp 20/03/2013
42
para Mariadb, sudo apt-get install libmariadbclient-devfez o truque.
Yuvilio 21/05
11
Se essas soluções não funcionam para você, então você pode ainda precisar instalar python-dev:apt-get install python-dev
Anoyz
295

No Mac OS, simplesmente executei isso no terminal para corrigir:

export PATH=$PATH:/usr/local/mysql/bin

Esta é a correção mais rápida que encontrei - ela é adicionada ao caminho, mas acho melhor você adicioná-la permanentemente (por exemplo, adicioná-la /etc/paths) se você planeja instalar o MySQL-python em outro ambiente.

(testado no OSX Mountain Lion)

Chris Villa
fonte
6
Se você estiver usando a pilha MAMP do bitnami, use export PATH=$PATH:/Applications/mampstack-5.3.17-0/mysql/binSe você estiver usando esta pilha MAMP comercial , por outro lado, desinstale-a e obtenha a bitnami porque é uma merda e não inclui os cabeçalhos do mysql.
Timmmm
3
Para tornar o caminho permanente, adicione-o ao final de /etc/paths- você precisará abrir uma nova janela do terminal para acessar o novo caminho.
Rojoca
@ Timmmm Solução bastante cara, pois todos os meus bancos de dados estão na versão oficial: / existe alguma outra maneira de resolver isso?
Volatil3
1
Muito útil. Se você estiver usando o XAMPP, use-o comoexport PATH=$PATH:/Applications/XAMPP/xamppfiles/bin
Kevin London
10
Isso finalmente funciona, obrigado! Além disso, se mysqlnão estiver instalado, use brew install mysqlonde o local está /usr/local/bin/mysql(ou /usr/local/Cellar/mysql/VERSION/bin/se não estiver vinculado).
Aziz Alto
102
apt-get install libmysqlclient-dev python-dev

Parecia fazer o truque.

Steve Gregory
fonte
2
Sim, para mim apenas o libmysqlclient-dev não foi suficiente, o python-dev também estava ausente.
Anderson Santos
No Ubuntu 12.04 (preciso) (32 bits) após a atualização local do 10.04 (lucid), apenas isso resolveu esses erros. Especialmente o "python-dev" adicional!
Ice
Funcionou para mim também - python-dev foi a última peça do quebra-cabeça. Já tinha o python-mysqldb instalado, então isso definitivamente não é tudo o que é necessário.
19414 Tim Tim S.
Atualização: para Python3 você precisa instalar python3-dev.
cezar
Eu precisava fazer isso e também instalar gccpara obter uma instalação bem-sucedida. Além disso, é provavelmente melhor para não fazer python-dev, mas especificar a versão particular, como python2.7-dev, python3.6-dev, etc.
Tim Tisdall
89

Talvez haja várias respostas para a questão acima, abaixo está uma solução agregada.

Para o Ubuntu:

$ sudo apt update
$ sudo apt install python-dev
$ sudo apt install python-MySQLdb

Para o CentOS:

$ yum install python-devel mysql-devel
user2886440
fonte
Obrigado pela dica centos. Eu estive perseguindo isso a manhã toda.
Pete Magsig 23/02/19
Talvez vale a pena adicionar python3-dev/python3-devel
Gergely M
36

Se você estiver no MAC Instale isso globalmente

brew install mysql

exporte o caminho como este

export PATH=$PATH:/usr/local/mysql/bin

Do que globalmente ou em seu local de trabalho, o que você quiser

pip install MySQL-Python

Nota: globalmente para python3, pois o Mac pode ter python2 e 3

pip3 install MySQL-Python
Zaman Afzal
fonte
34

Você pode usar o MySQL Connector / Python

Instalação via PyPip

pip install mysql-connector-python

Mais informações podem ser encontradas no blog de anúncios do MySQL Connector / Python 1.0.5 beta .

No Launchpad, há um bom exemplo de como adicionar, editar ou remover dados com a biblioteca.

ndequeker
fonte
3
Esta é a única coisa que funcionou para mim quando desisti do mysqldb e da confusão do mysql_config. Funciona bem para os meus propósitos.
wh1tney
@wjoba você pode explicar mais? Estou instalando py-mysql2pgsqle encontrando erro da coisa mysql_config. Estou usando o MAMP. O que o conector mysqk faz?
Volatil3
1
@ Volatil3 O mysql-connector-python funcionou bem como uma substituição imediata do mysql-python para mim. A instalação do antigo via pip funcionou sem problemas e se livrou do erro mysql_config porque (nas próprias palavras do desenvolvedor) o conector mysql é "Python puro e não precisa de nenhum outro software MySQL, portanto não há bibliotecas C e compilação". Espero que ajude. Experimente a instalação mencionada nesta solução e veja se você ainda encontra o erro.
wh1tney
No Ubuntu 14/4, eu recebo: Não foi possível encontrar todos os downloads que satisfaçam o requisito mysql-connector-python
Timo
Este comando funcionou para mim depois de tentar todo o resto.
Relógios
27

Para usuários do centos :

yum install -y mysql-devel python-devel python-setuptools

então

pip install MySQL-python


Se esta solução não funcionar , imprima o erro de compilação do gcc como:
_mysql.c:29:20: error: Python.h: No such file or directory

Você precisa especificar o caminho de Python.h, assim:
pip install --global-option=build_ext --global-option="-I/usr/include/python2.6" MySQL-python

lancerex
fonte
1
Parece que você não tem os arquivos de inclusão certos para os quais o binário Python pipestá instalando. O próprio Python normalmente fornece o local de inclusão; especificar manualmente o caminho provavelmente está apontando para a versão errada .
Martijn Pieters
Eu tive que fazer um sudo pip install MySQL-pythondevido a um erro:copying build/lib.linux-x86_64-2.7/_mysql_exceptions.py -> /usr/lib64/python2.7/site-packages error: /usr/lib64/python2.7/site-packages/_mysql_exceptions.py: Permission denied
bennythejudge 30/10
18

Eu estava tentando instalar mysql-pythonem uma instância do Amazon EC2 Linux e tive que instalar o seguinte:

yum install mysql mysql-devel mysql-common mysql-libs gcc

Mas então eu recebi este erro:

_mysql.c:29:20: fatal error: Python.h: No such file or directory

Então eu instalei:

yum install python-devel

E isso fez o truque.

Emil Davtyan
fonte
1
Eu usei: sudo yum install mysql mysql-devel mysql-common mysql-libs gcc fora do meu virtualenv. Então, voltei ao meu ambiente virtual e corri pip install mysql-pythone funcionou.
31515
1
dnf install mysql-devel gccfoi enought para mim, isso depende do resto
Jens Timmerman
python-develagora dará erro, se estiver usando python 2.7, tente issopython27-devel
Sizzling Code
8

Para quem está usando o MariaDB em vez do MySQL, a solução é instalar o libmariadbclient-devpacote e criar um link simbólico para o arquivo de configuração com o nome correto.

Por exemplo, isso funcionou para mim:

ln -s /usr/bin/mariadb_config /usr/bin/mysql_config
Alexandru Chirila
fonte
2
Essa é uma resposta subestimada útil em qualquer caso em que se deseja conectar-se a um soquete de banco de dados conhecido e específico. Isso me ajudou a conectar-se a um banco de dados mysql independente. A maioria das soluções aqui recomendam reinstalar (ou instalar um segundo ou terceiro ... etc) cliente msql!
precisa saber é o seguinte
6

Tentar sudo apt-get build-dep python-mysqldb

KalamHavij
fonte
6

OSX Mavericks

Devido a alterações nas ferramentas de desenvolvimento osx mavericks e xcode, você pode receber um erro na instalação

clang: error: unknown argument: '-mno-fused-madd' [-Wunused-command-line-argument-hard-error-in-future]

portanto, use:

sudo ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install mysql-python
Thomas Schwärzl
fonte
6

Para Linux

isso funciona para mim

yum install python-devel mysql-devel
centavo chan
fonte
5

para mariadb, instale a lib mariadb client-dev em vez de libmysqlclient-dev

sudo apt-get install libmariadbclient-dev
Dinesh Sharma
fonte
Apenas o que eu preciso ao usar Debian 9 estiramento com MariaDB
anhtran
4

Você deve instalar o mysqlprimeiro:

yum install python-devel mysql-community-devel -y

Então você pode instalar mysqlclient:

pip install  mysqlclient
aeronave
fonte
2

Às vezes, o erro depende da causa real. tivemos um caso em que o mysql-python foi instalado através do pacote debian python-mysqldb.

um desenvolvedor que não sabia disso, executou acidentalmente pip uninstall mysql-pythone depois não conseguiu se recuperar com pip install mysql-pythono erro acima.

pip uninstall mysql-pythondestruiu o conteúdo do pacote debian e, é claro, pip install mysql-pythonfalhou porque o pacote debian não precisava de nenhum arquivo dev.

a solução correta nesse caso foi apt-get install --reinstall python-mysqldbrestaurar o mysql-python ao seu estado original.

eMBee
fonte
2

Eu tive o mesmo problema no Terraform: contêiner leve. É baseado no Alpine.

Lá você precisa instalar o mariadb-dev com:

apk add mariadb-dev

Mas essa não é suficiente porque também todas as outras dependências são perdidas:

apk add python2 py2-pip gcc python2-dev musl-dev
Alex
fonte
2

Sequência a ser seguida.

pip install mysqlclient
sudo apt-get install python3-dev libmysqlclient-dev
pip install configparser 
sudo cp /usr/lib/python3.6/configparser.py /usr/lib/python3.6/ConfigParser.py 

Em seguida, tente instalar o MYSQL-python novamente. Isso funcionou para mim

lakshmankashyap
fonte
1

Ocorreu um problema semelhante ao tentar instalar no OS X Server 10.6.8. Aqui está o que eu tinha que fazer. Usando:

MySQL-python 1.2.4b4 (fonte) MySQL-5.6.19 (instalador binário) Python 2.7 (instalador binário) NOTA: Instalando em virtualenv ...

Descompacte a fonte, abra 'distribut_setup.py' e edite DEFAULT_VERSION para usar a versão mais recente das ferramentas de distribuição, da seguinte forma:

DEFAULT_VERSION = "0.6.49"

Salve . Abra o arquivo 'site.cfg' e descomente o caminho do mysql_config para que ele se pareça com algo semelhante (faça referência ao seu próprio caminho ao mysql_config):

# The path to mysql_config.
# Only use this if mysql_config is not on your PATH, or you have some weird
# setup that requires it.
mysql_config = /usr/local/mysql/bin/mysql_config

Agora limpo, compilar e criar não falhará com o erro 'mysql_config' não encontrado. Espero que isso ajude alguém tentando usar seus antigos xserves :-)

Brad Herdson
fonte
1

O caminho do seu sudo não sabe sobre o caminho local ... entre no modo de superusuário, adicione o caminho e instale-o a partir daí.

sudo su
export PATH=$PATH:/usr/local/mysql/bin/
pip install mysql-python
exit

E você está pronto para funcionar no OSX. Agora você tem um python global atualizado.

Paul Kenjora
fonte
1

se você instalar o MySQL-python no seu ambiente virtual, verifique a versão do pip; se a versão for anterior à 9.0.1, atualize-a

pip install --upgrade pip
Albert Chen
fonte
Veja stackoverflow.com/questions/7475223/… Acho que sua resposta não vai ajudar
Linus
0

no MacOS Mojave, o mysql_config é encontrado em / usr / local / bin / em vez de / usr / local / mysql / bin conforme indicado acima, portanto, não é necessário adicionar nada ao caminho.

Avidan Efody
fonte