mysql_config não encontrado ao instalar a interface python mysqldb

478

Estou tentando obter um script Python para rodar no servidor linux ao qual estou conectado via ssh. O script usa mysqldb. Eu tenho todos os outros componentes de que preciso, mas quando tento instalar o mySQLdb via setuptools da seguinte forma :,

python setup.py install

Eu recebo o seguinte relatório de erro relacionado ao mysql_configcomando.

sh: mysql_config: command not found
Traceback (most recent call last):
  File "setup.py", line 15, in <module>
    metadata, options = get_config()
  File "/usr/lib/python2.5/MySQL-python-1.2.3/setup_posix.py", line 43, in get_config
    libs = mysql_config("libs_r")
  File "/usr/lib/python2.5/MySQL-python-1.2.3/setup_posix.py", line 24, in mysql_config
    raise EnvironmentError("%s not found" % (mysql_config.path,))
EnvironmentError: mysql_config not found

Alguém mais encontrou esse erro e, em caso afirmativo, como você o solucionou / o que posso fazer para instalar o mysqldb com êxito?

user904542
fonte
1
Oi @ user904542 - Editei a sua pergunta para torná-la um pouco mais concisa e obter algumas respostas :) Se você não gosta, ou deseja fornecer detalhes adicionais, há um link de edição diretamente na sua pergunta, que você pode usar para reverter para o original ou adicionar às alterações que eu fiz.
3
Encontrei exatamente o mesmo problema, porque instalei o mysql a partir da fonte. se você também fizer, basta executar algo assim para tornar o mysql_config disponível: sudo ln -s / usr / local / mysql / bin / mysql_config / usr / bin / mysql_config ou adicione / usr / local / mysql / bin / ao seu caminho.
Thi Duong Nguyen
Se você já instalou o mysql, o comentário acima de Thi Duong Nguyen resolve o problema criando um link simbólico para o arquivo mysql_config no diretório / usr / bin, que está no caminho que o python pesquisará.
Alex Boschmans
2
basta fazer isso ------------- apt-get install python-mysqldb
shadow0359
O link simbólico do @AlexBoschmans /usr/binestá errado, é usr/local/my...a resposta de Thi.
Timo

Respostas:

701

O mySQLdb é uma interface python para o mysql, mas não é o próprio mysql. E aparentemente o mySQLdb precisa do comando 'mysql_config', então você precisa instalá-lo primeiro.

Você pode confirmar que instalou ou não o mysql em si, executando "mysql" no shell? Isso deve fornecer uma resposta diferente de "mysql: command not found".

Qual distribuição linux você está usando? O Mysql é pré-empacotado para a maioria das distribuições Linux. Por exemplo, para debian / ubuntu, instalar o mysql é tão fácil quanto

sudo apt-get install mysql-server

O mysql-config está em um pacote diferente, que pode ser instalado a partir de (novamente, assumindo debian / ubuntu):

sudo apt-get install libmysqlclient-dev

Se você estiver usando o mariadb, a queda no substituto do mysql e execute

sudo apt-get install libmariadbclient-dev

Referência: https://github.com/JudgeGirl/Judge-sender/issues/4#issuecomment-186542797

amarillion
fonte
1
Lendo listas de pacotes ... Concluído Criando árvore de dependência Lendo informações de estado ... Concluído Nota, selecionando libmysqlclient15-dev em vez de libmysqlclient-dev Alguns pacotes não puderam ser instalados. Isso pode significar que você solicitou uma situação impossível ou, se estiver usando a distribuição instável, alguns pacotes necessários ainda não foram criados ou removidos do Incoming. As informações a seguir podem ajudar a resolver a situação: Os seguintes pacotes têm dependências não satisfeitas: libmysqlclient15-dev: Depende: zlib1g-dev mas não vai ser instalado E: Pacotes quebrados
user904542
2
O 'sudo apt-get install mysql' deve ser 'sudo apt-get install mysql-server'?
Kohanz
4
Note que para o Debian é sudo apt-get install mysql-serveresudo apt-get install mysql-client
Marc Juchli 12/04
2
Podemos finalmente admitir que 'pip' é um fracasso colossal? Erros como esse são dolorosos e parecem ocorrer com a maioria dos pacotes. O Python precisa muito de uma nova solução para o gerenciamento de pacotes.
Eddie Sullivan
3
Para mim, no Debian, era libmysqlclient-dev. Na verdade eu tenho instalado tanto libmariadbclient-dev libmysqlclient-dev
mirek
187

Eu estava instalando python-mysqlno Ubuntu 12.04 usando

pip install mysql-python

Primeiro, tive o mesmo problema:

Not Found "mysql_config"

Isso funcionou para mim

$ sudo apt-get install libmysqlclient-dev

Então eu tive esse problema:

...
_mysql.c:29:20: error fatal: Python.h: No existe el archivo o el directorio

compilación terminada.

error: command 'gcc' failed with exit status 1

Então eu tentei com

apt-get install python-dev

E então eu fiquei feliz :)

pip install mysql-python
    Installing collected packages: mysql-python
      Running setup.py install for mysql-python
        building '_mysql' extension
        gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Dversion_info=(1,2,4,'beta',4) -D__version__=1.2.4b4 -I/usr/include/mysql -I/usr/include/python2.7 -c _mysql.c -o build/temp.linux-x86_64-2.7/_mysql.o -DBIG_JOINS=1 -fno-strict-aliasing -g
        In file included from _mysql.c:44:0:
        /usr/include/mysql/my_config.h:422:0: aviso: se redefinió "HAVE_WCSCOLL" [activado por defecto]
        /usr/include/python2.7/pyconfig.h:890:0: nota: esta es la ubicación de la definición previa
        gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro build/temp.linux-x86_64-2.7/_mysql.o -L/usr/lib/x86_64-linux-gnu -lmysqlclient_r -lpthread -lz -lm -lrt -ldl -o build/lib.linux-x86_64-2.7/_mysql.so

Successfully installed mysql-python
Cleaning up...
xtornasol512
fonte
1
Também funciona no openSUSE, onde "libmysqlclient-dev" se torna "libmysqlclient-devel". Agora o pacote pip é instalado corretamente. Obrigado.
pbarill
Obrigado! Também funciona no Ubuntu 14.04.1 LTS
Krasimir
a instalação de cabeçalhos python dev resolveu o erro ausente do Python.h. Obrigado.
Natus Drew
3
se usar python3.x, tente com o apt-get install python3-dev.
Legolas Bloom
Isso não funcionou para mim no 14.04 - "E: O pacote 'python-dev' não tem candidato à instalação"
Rene Wooller
46

(Específico para Mac OS X)

Eu tentei muitas coisas, mas esse conjunto de comandos finalmente funcionou para mim.

  1. Instalar mysql
    brew install mysql
  2. brew unlink mysql
  3. brew install mysql-connector-c
  4. Adicione a pasta bin do mysql ao PATH
    export PATH=/usr/local/Cellar/mysql/8.0.11/bin:$PATH
  5. mkdir /usr/local/Cellar/lib/
  6. Crie um link simbólico
    sudo ln -s /usr/local/Cellar/mysql/8.0.11/lib/libmysqlclient.21.dylib /usr/local/Cellar/lib/libmysqlclient.21.dylib
  7. brew reinstall openssl( fonte )
  8. Por fim, instale o mysql-client
    LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/ pip install mysqlclient

Atualização: caso isso não funcione, o @vinyll sugere executar brew link mysqlantes da etapa 8.

Pulkit Pahwa
fonte
2
apenas aplicando as etapas de 1 a 4 e depois funcionou. obrigado!
kujiy
Para a Etapa 4, use brew info mysqlpara obter o caminho real / correto para a instalação do mysql. Em seguida, para fazer a PATHalteração persistir, faça o export PATH..no seu ~ / .bash_profile.
Gino Mempin 26/12/19
passo 1-4 com brew link --overwrite mysql-connector-ctrabalhos no meu Mac
Hunger
Finalmente, ele funciona na minha Catalina. Use especificar ssl aberto é muito importante.
feliz
4
Eu tive que fazer um brew link mysqlpasso antes da etapa 8 para executá-lo.
vinyll 10/03
37

No Red Hat eu tive que fazer

sudo yum install mysql-devel gcc gcc-devel python-devel
sudo easy_install mysql-python

Então funcionou.

Elliott
fonte
3
Trabalhou para mim no CentOS 7:yum install MySQL-python
hudolejev 3/16/16
2
Se você precisa instalar MySQL-pythoncomo um pacote Python, ou estão usando virtualenv, isso pode ajudar: yum install mysql-devel; venv/bin/pip install MySQL-python.
Hudolejev
2
Se você usa o MariaDB no CentOS 7, execute sudo yum install mariadb-develprimeiro e instale o mysqlclient porpip install mysqlclient
Belter
de onde você tirou o gcc-devel rpm?
Fayaz 03/02
yum install mysql-develCentos 8
Diego Andrés Díaz Espinoza
33

O abaixo funcionou para mim no Ubuntu 12.04 LTS:

apt-get install libmysqlclient-dev python-dev

Apesar de ter funcionado, eu ainda fiz o seguinte:

export PATH=$PATH:/usr/local/mysql/bin/
nasowah
fonte
27

Eu recebi o mesmo erro ao tentar instalar mysql-python .

Foi assim que eu consertei.

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

O problema era que o instalador não pôde encontrar o mysql_config no caminho padrão. Agora ele pode ..e funcionou ..

 15 warnings generated.
    clang -bundle -undefined dynamic_lookup -Wl,-F. build/temp.macosx-10.8-intel-2.7/_mysql.o -L/usr/local/mysql/lib -lmysqlclient_r -lz -lm -lmygcc -o build/lib.macosx-10.8-intel-2.7/_mysql.so -arch x86_64

Successfully installed mysql-python
Cleaning up...

Espero que isto ajude.

Obrigado.

Mayank R Jain
fonte
Eu estava tendo o mesmo problema ao instalar o MySQL localmente em um Mac executando o OSX 10.9.4 (Mavericks). Esta solução funcionou para mim também.
precisa saber é
20

Corrigi esse problema com as seguintes etapas:

sudo apt-get install libmysqlclient-dev
sudo apt-get install python-dev
sudo python setup.py install
zhaozhi
fonte
1
Ao executar> = Debian Stretch, certifique-se de instalar default-libmysqlclient-dev, pois o libmysqlclient-devpacote regular não possui candidato à instalação.
Bono
19

Os comandos (mysql também) mPATH podem estar ausentes.

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

samwize
fonte
11

Etapa 1: - Instalar o Python3 e o Python3-dev Both

sudo apt-get install python3 python3-dev

Etapa 2: - Instalar o Python e o Mysql Connector

sudo apt-get install libmysqlclient-dev

Etapa 3: - Instalar o cliente mysql python

sudo apt-get install mysqlclient

Isto irá resolver o seu problema

Aka
fonte
O passo 2 corrigiu isso para mim.
saltchicken
Isso corrigiu meu problema, que havia me incomodado por 3 horas .. Muito obrigado !!!
Yeojin 5/11/19
10

Se você está no macOS e já instalou o [email protected] via brew install:

  1. brew install mysql-connector-c
  2. brew unlink [email protected]
  3. brew link --overwrite --dry-run [email protected] primeiro, para ver quais links simbólicos estão sendo substituídos
  4. brew link --overwrite --force [email protected] sobrescrever links simbólicos relacionados ao mysql com [email protected]
  5. pip install mysqlclient
Rizky Luthfianto
fonte
9

Corrigi-o instalando o libmysqlclient:

sudo apt-get install libmysqlclient16-dev
thoslin
fonte
9

O MySQL-pythonpacote está usando o mysql_configcomando para aprender sobre a mysqlconfiguração em seu host. Seu host não possui omysql_config comando

O pacote de bibliotecas de desenvolvimento do MySQL (MySQL-devel-xxx) de dev.mysql.com fornece esse comando e as bibliotecas necessárias ao pacote MySQL-python. Os MySQL-develpacotes são encontrados na área de servidor de comunidade de download. Os nomes dos pacotes da biblioteca de desenvolvimento MySQL começam MySQL-devele variam a versão do MySQL e a plataforma linux (por exemplo,MySQL-devel-5.5.24-1.linux2.6.x86_64.rpm ).

Note que você não precisa instalar o servidor mysql.

John Livingston
fonte
8

O pacote libmysqlclient-dev foi descontinuado, portanto, use o comando abaixo para corrigi-lo.

O pacote libmysqlclient-dev não está disponível, mas é referido por outro pacote. Isso pode significar que o pacote está ausente, foi obsoleto ou está disponível apenas em outra fonte

sudo apt-get install default-libmysqlclient-dev
Rajathithan Rajasekar
fonte
6

No centos 7, isso funciona para mim:

yum install mariadb-devel
pip install mysqlclient
Rajiv Sharma
fonte
5

Na minha máquina Fedora 23, tive que executar o seguinte:

sudo dnf install mysql-devel
Raptor
fonte
5

Para o Alpine Linux:

$ apk add mariadb-dev mariadb-client mariadb-libs

O MariaDB é um substituto para o MySQL e se tornou o novo padrão a partir do Alpine 3.2. Veja https://bugs.alpinelinux.org/issues/4264

aboutaaron
fonte
1
o que torna a minha imagem alpina quase 500MiB, eu vim para alpino para um tamanho de imagem menor
ospider
Eu também tenho que instalar python3-dev para a lib construir
ospider
4

Eu acho que as seguintes linhas podem ser executadas no terminal

 sudo ln -s /usr/local/zend/mysql/bin/mysql_config /usr/sbin/

Este diretório mysql_config é para o servidor zend no MacOSx. Você pode fazer isso no linux, como as seguintes linhas

sudo ln -s /usr/local/mysql/bin/mysql_config /usr/sbin/

Este é o diretório linux mysql padrão.

hkulekci
fonte
4

Eu tive esses problemas e resolvi se adicionando um link simbólico para mysql_config.

Eu tinha instalado o mysql com homebrew e vi isso na saída.

Error: The `brew link` step did not complete successfully

Dependendo de como você conseguiu mysql, será em lugares diferentes. No meu caso /usr/local/Cellar/mysql
Depois que você souber onde está, deverá conseguir um link simbólico para onde o python está procurando. /usr/local/mysql

Isso funcionou para mim.

ln -s /usr/local/Cellar/mysql/<< VERSION >>/bin/mysql_config   /usr/local/mysql/bin/mysql_config
Schechter
fonte
4

Eu tive o mesmo problema. Eu o resolvi seguindo este tutorial para instalar o Python com python3-dev no Ubuntu 16.04:

sudo apt-get update
sudo apt-get -y upgrade
sudo apt-get install -y python3-pip
sudo apt-get install build-essential libssl-dev libffi-dev python3-dev

E agora você pode configurar seu ambiente virtual:

sudo apt-get install -y python3-venv
pyvenv my_env
source my_env/bin/activate
Little Brain
fonte
3

Você precisa instalar o pacote python-dev:

sudo apt-get install python-dev
ebarch
fonte
2

sudo apt-get install python-mysqldb

Python 2.5? Parece que você está usando uma versão muito antiga do Ubuntu Server (Hardy 8.04?) - confirme qual versão do Linux o servidor usa.

Pesquisa python-mysql no banco de dados de pacotes do ubuntu

Algumas informações adicionais:

No README do mysql-python -

Red Hat Linux .............

O MySQL-python é pré-empacotado no Red Hat Linux 7.xe mais recente. Isso inclui o Fedora Core e o Red Hat Enterprise Linux. Você também pode criar seus próprios pacotes RPM, conforme descrito acima.

Debian GNU / Linux ................

Empacotado como python-mysqldb_ ::

# apt-get install python-mysqldb

Ou use o Synaptic.

.. _ python-mysqldb: http://packages.debian.org/python-mysqldb

Ubuntu ......

O mesmo que com o Debian.

Nota de rodapé: Se você realmente estiver usando uma distribuição de servidores mais antiga que o Ubuntu 10.04, ficará sem suporte oficial e deverá atualizar mais cedo ou mais tarde.

Gary
fonte
Posso confirmar para Debian 10 sudo apt-get install python-mysqldb
Tedo Vrbanec
Isso é tudo o que você precisa fazer: dev.mysql.com/doc/connector-python/en/…
Abhinandan Dubey
2

Este método é apenas para quem sabe que o Mysql está instalado, mas ainda não é possível encontrar o mysql_config. Isso acontece se a instalação do python não conseguir encontrar o mysql_config no caminho do sistema, o que acontece principalmente se você tiver feito a instalação via .dmg Mac Package ou instalado em algum caminho personalizado. A maneira mais fácil e documentada do MySqlDB é alterar o site.cfg . Encontre o mysql_config que provavelmente está em / usr / local / mysql / bin / e altere a variável a saber mysql_config exatamente como abaixo, e execute a instalação novamente. Não se esqueça de cancelar o comentário removendo "#"

Alterar abaixo da linha

"#mysql_config = / usr / local / bin / mysql_config"

para

"mysql_config = / usr / local / mysql / bin / mysql_config"

dependendo do caminho no seu sistema.

A propósito, eu usei o python install depois de alterar o site.cfg

sudo /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python setup.py install

Ahsan.Amin
fonte
2

Até o momento, todas as soluções (Linux) exigem sudoou direitos de root para instalar. Aqui está uma solução se você não tem direitos de root e sem sudo. (não sudo apt install ...):

  1. Faça o download do arquivo .deb do libmysqlclient-dev, por exemplo, deste espelho
  2. Navegue até o arquivo baixado e execute dpkg -x libmysqlclient-dev_<version tag>.deb .Isso extrairá uma pasta chamada usr.
  3. Faça o link simbólico ./usr/bin/mysql_configpara algum local encontrado em $PATH:

    ln -s `pwd` /usr/bin/mysql_config FOLDER_IN_YOUR_PATH

  4. Agora deve ser capaz de encontrar mysql_config

Testado no Ubuntu 18.04.

RunOrVeith
fonte
Isso funciona no CentOS 7? Supondo que não tenho acesso root ou dpkg instalado, como devo abordá-lo?
Sohil 6/03/19
Não há necessidade de ser root, desde que você está trabalhando em seu próprio ambiente virtual
BlackBear
2

Para o macOS Mojave, era necessária uma configuração adicional; para os compiladores encontrarem o openssl, pode ser necessário definir:

export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"
Haidar Zeineddine
fonte
2

Acho que a maneira mais conveniente de resolver esse problema em 2020 é usar outro pacote python. Não precisamos instalar nenhum outro software binário.

Tente isto

pip install mysql-connector-python

e depois

import mysql.connector

mydb = mysql.connector.connect(
          host="",
          user="",
          passwd="",
          database=""
          )      
cursor = mydb.cursor( buffered=True)
cursor.execute('show tables;')
cursor.execute('insert into test values (null, "a",10)')
mydb.commit()
mydb.disconnect()

xfdywy
fonte
1

Encontrei o mesmo problema, apenas adicionei o caminho em que * mysql_config * residia na variável de ambiente PATH e funcionou para mim.

folheto
fonte
1

sudo apt-get build-dep python-mysqldb instalará todas as dependências para construir o pacote a partir do PIP / easy_install

Thomas Grainger
fonte
1

Como o erro real é

gcc ... -I/usr/include/python2.7 ...

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

e Se você não conseguir instalar os pacotes python-dev ou python-devel, poderá fazer o download do archive com a versão necessária das fontes python em http://hg.python.org/ e colocar os arquivos de cabeçalho na pasta apropriada para incluir

Oleg Neumyvakin
fonte
1

Basta digitar:

$ sudo apt-get install python-dev
$ venv/bin/pip install MySQL-python

Isso resolverá esses problemas.

Luciano D. Mota
fonte
3
Se você receber um erro com o mysql_config, instale o seguinte:sudo apt-get install libmysqlclient-dev
Luciano D. Mota
1

No CentOS 7, as seguintes ações devem ser feitas:

#step1:install mysql 
https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/

#step2:
sudo yum install mysql-devel
DachuanZhao
fonte