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?


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

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)


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.


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

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

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.


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


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.


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

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

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

6

Para Linux

isso funciona para mim

yum install python-devel mysql-devel

5

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

sudo apt-get install libmariadbclient-dev

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

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.


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

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


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 :-)


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.



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.

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.