Mac OS X - EnvironmentError: mysql_config não encontrado

121

Em primeiro lugar, sim, eu já vi isso:

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

O problema

Estou tentando usar Django em um projeto do Google App Engine. No entanto, não consegui iniciar porque o servidor falha ao iniciar corretamente devido a:

ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

Eu fiz algumas pesquisas e tudo apontou para a necessidade de instalar o Mysql-python, pois aparentemente ele não está no meu sistema. Na verdade, tentei desinstalá-lo e consegui:

Cannot uninstall requirement mysql-python, not installed

Sempre que realmente tento instalar via:

sudo pip install MySQL-python

Recebo um erro informando:

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

Já tentei correr:

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

mas isso não pareceu ajudar, pois executei o comando de instalação novamente e ainda falhou.

Alguma ideia?

Observe que não estou em um virtualenv.

daniel_c05
fonte
Você sempre pode acessar o arquivo que gera o EnvironmentErrore imprimir informações de depuração mais úteis, como os.getcwd(). você também pode adicionar um pdb.set_trace()e descobrir coisas.
ealfonso

Respostas:

340

Ok, bem, em primeiro lugar, deixe-me verificar se estou na mesma página que você:

  • Você instalou o python
  • Você fez brew install mysql
  • Você fez export PATH=$PATH:/usr/local/mysql/bin
  • E, finalmente, você fez pip install MySQL-Python(ou pip3 install mysqlclientse estiver usando o python 3)

Se você executou todas essas etapas na mesma ordem e ainda assim obteve um erro, continue lendo até o final, se, no entanto, não seguiu exatamente essas etapas tente, seguindo-as desde o início.

Então, você seguiu as etapas e ainda está obtendo um erro, bem, existem algumas coisas que você pode tentar:

  1. Tente fugir which mysql_configdo bash. Provavelmente não será encontrado. É por isso que a construção também não está encontrando. Tente correr locate mysql_confige veja se alguma coisa volta. O caminho para esse binário precisa estar na variável de ambiente $ PATH do shell ou explicitamente no arquivo setup.py para o módulo, supondo que ele esteja procurando em algum lugar específico para esse arquivo.

  2. Em vez de usar MySQL-Python, tente usar 'mysql-connector-python', ele pode ser instalado usando pip install mysql-connector-python. Mais informações sobre isso podem ser encontradas aqui e aqui .

  3. Encontre manualmente a localização de 'mysql / bin', 'mysql_config' e 'MySQL-Python' e adicione todos eles à variável de ambiente $ PATH.

  4. Se todas as etapas acima falharem, então você pode tentar instalar 'mysql' usando MacPorts, caso em que o arquivo 'mysql_config' seria realmente ser chamado de 'mysql_config5', e, neste caso, você teria que fazer isso após a instalação: export PATH=$PATH:/opt/local/lib/mysql5/bin. Você pode encontrar mais detalhes aqui .

Obs1: Já vi algumas pessoas falando que instalando python-deve libmysqlclient-devtambém ajudou, porém não sei se esses pacotes estão disponíveis no Mac OS.

Nota2: Além disso, certifique-se de tentar executar os comandos como root.

Obtive minhas respostas (além do meu cérebro) desses lugares (talvez você pudesse dar uma olhada neles, para ver se ajudaria): 1 , 2 , 3 , 4 .

Eu esperava ter ajudado e ficaria feliz em saber se isso funcionou ou não. Boa sorte.

Vadorequest
fonte
2
Ótima explicação, FWIW no linux, instalar python-dev e libmysqlclient-dev é geralmente a única coisa que precisa ser feita para funcionar, mas no osx tudo que eu precisei fazer foi atualizar meu banho. Eu acredito que no linux você pode instalar o mysql sem obter o python deps para mysql-python se você não instalar as bibliotecas dev indicadas. (Cometi esse erro tantas vezes, lol)
Iain Duncan
1
Após a atualização para o Yosemite, agora ele também reclama da falta de "stdio.h". Você pode corrigir isso acessando aqui: stackoverflow.com/questions/19580758/…
Mihai Oprea
4
Correndo brew install mysqlconsertou. Além disso, este comando which mysql-confignão funcionou para mim, mas which mysql_configfuncionou.
Chade,
1
Também tive que adicionar esta linha ao meu .bash_profilearquivo:export DYLD_LIBRARY_PATH=/usr/local/Cellar/mysql/5.7.9/lib/
JeffThompson
2
Tive que apontar para a instalação do brewsexport PATH=$PATH:/usr/local/Cellar/mysql/5.7.20/bin
Climbs_lika_Spyder de
6

Eu estava depurando esse problema há muito tempo - 3 horas e 17 minutos. O que me incomodou particularmente foi que eu já tinha sql instalado no meu sistema através de um trabalho anterior da uni, mas pip / pip3 não estava reconhecendo. Esses tópicos acima e muitos outros que vasculhei na internet foram úteis para eluminar o problema, mas não resolveram as coisas.

RESPONDA

Pip está procurando binários mysql no diretório Homebrew, localizado em relação ao Macintosh HD @

/usr/local/Cellar/

então descobri que isso requer que você faça algumas mudanças

etapa 1: Baixe o MySql se ainda não o tiver feito https://dev.mysql.com/downloads/

Etapa 2: localize-o em relação ao Macintosh HD e CD

/usr/local/mysql/bin

Etapa 3: uma vez lá, abra o terminal e use um editor de texto de sua escolha - eu sou um cara neovim, então digitei (não vem automaticamente com o Mac ... outra história para outro dia)

nvim mysql_config

Etapa 4: você verá aproximadamente na linha 112

# Create options 
libs="-L$pkglibdir"
libs="$libs -l "

Mudar para

# Create options 
libs="-L$pkglibdir"
libs="$libs -lmysqlclient -lssl -lcrypto"

* você notará que este arquivo tem acesso somente leitura, então se você estiver usando o vim ou o neovim

:w !sudo tee %

Etapa 5: vá para o diretório inicial e edite o arquivo .bash_profile

cd ~

Então

nvim .bash_profile

e adicione

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

para o arquivo e depois salve

Etapa 6: em relação ao Macintosh HD, localize caminhos e adicione-os

cd /private/etc/

então

nvim paths

e adicione

/usr/local/mysql/bin

* você notará novamente que este arquivo tem acesso somente leitura, então se você estiver usando o vim ou o neovim

:w !sudo tee % 

então

cd ~

em seguida, atualize o terminal com suas alterações executando

source .bash_profile

Finalmente

pip3 install mysqlclient

E Viola. Lembre-se de que é uma vibração.

Trevor James Oluotch
fonte
Meu libsinterior de mysql_configjá estava conforme descrito na seção "Alterar para". No entanto, adicionar o PATH para private/etcajudar a permitir a instalação global do mysqlclientque estava falhando antes.
martin-martin
5

Se você não quiser instalar o mysql completo, podemos consertar isso apenas instalando mysqlclient. Assim brew install mysqlclient que o cmd for concluído, ele pedirá para adicionar a linha abaixo a ~/.bash_profile:

echo 'export PATH="/usr/local/opt/mysql-client/bin:$PATH"' >> ~/.bash_profile

Feche o terminal e inicie um novo terminal e prossiga com pip install mysqlclient

Uma corrida
fonte
3

Estou executando o Python 3.6 no MacOS Catalina. Meu problema foi que tentei instalarmysqlclient==1.4.2.post1 e continua lançando o erro mysql_config não encontrado.

Estas são as etapas que executei para resolver o problema.

  1. Instale mysql-connector-c usando brew (se você já instalou o mysql unlink primeiro brew unlink mysql) -brew install mysql-connector-c
  2. Abra mysql_config e edite o arquivo na linha 112
# Create options 
libs="-L$pkglibdir"
libs="$libs -lmysqlclient -lssl -lcrypto"
  1. brew info openssl - isso lhe dará mais informações sobre o que precisa ser feito para colocar o openssl no PATH
  2. em relação à etapa 3, você precisa fazer isso para colocar o openssl no PATH - echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
  3. para compiladores encontrarem o openssl - export LDFLAGS="-L/usr/local/opt/openssl/lib"
  4. para compiladores encontrarem o openssl - export CPPFLAGS="-I/usr/local/opt/openssl/include"
azmirfakkri
fonte
Obrigado! Eu tentei tantas coisas e seu método funcionou para mim.
Yagimutsu
2

Além disso, isso acontece quando eu estava instalando o mysqlclient,

$ pip install mysqlclient

Como o usuário 3429036 disse,

$ brew install mysql
AndreL
fonte
1

Esta resposta é para usuários de MacOS que não instalaram do, brewmas sim do oficial .dmg/.pkg. Esse instalador não consegue editar o seu PATH, fazendo com que as coisas saiam da caixa:

  1. Todos os comandos do MySQL como mysql, mysqladmin, mysql_config, etc não pode ser encontrado, e como resultado:
  2. o "Painel de preferências do MySQL" não aparece nas Preferências do sistema e
  3. você não pode instalar nenhuma API que se comunique com o MySQL, incluindo mysqlclient

O que você precisa fazer é anexar a binpasta MySQL (normalmente /usr/local/mysql/binem seu PATHadicionando esta linha em seu ~/.bash_profilearquivo:

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

Você deve então recarregar o seu ~/.bash_profilepara que a alteração tenha efeito na sua sessão atual do Terminal:

source ~/.bash_profile

Antes de instalar mysqlclient, no entanto, você precisa aceitar a licença XcodeBuild:

sudo xcodebuild -license

Siga as instruções para despedir sua família, após o que você poderá instalar mysqlclientsem problemas:

pip install mysqlclient

Depois de instalar isso, você deve fazer mais uma coisa para corrigir um bug de tempo de execução que vem com o MySQL ( Dynamic Library libmysqlclient.dylibnot found ), adicionando esta linha ao caminho das bibliotecas dinâmicas do sistema:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/:$DYLD_LIBRARY_PATH

Zhanwen Chen
fonte
Eu vi sua resposta depois de encontrar os binários no disco executando sudo lsof -i :3306para ver o PID do processo MySQL ativo e, em seguida, executando sudo -P <pid>nele para ver seus arquivos abertos. Isso veio com o /usr/local/mysql-8.0.18-macos10.14-x86_64/binque eu adicionei $PATHe voila !
Neil C. Obremski
0

Se você instalou o mysql usando o Homebrew especificando uma versão, então mysql_config estará presente aqui. - /usr/local/Cellar/[email protected]/5.6.47/bin

pode encontrar o caminho da bin sql usando o comando ls em / usr / local / diretório

/usr/local/Cellar/mysql@5.6/5.6.47/bin

Adicione o caminho para o perfil do bash como este.

nano ~/.bash_profile

export PATH="/usr/local/Cellar/[email protected]/5.6.47/bin:$PATH"
Mohammed_ayaz
fonte
0

O problema no meu caso era que eu estava executando o comando dentro de um ambiente virtual python e não tinha o caminho para / usr / local / mysql / bin, embora eu o tenha colocado no arquivo .bash_profile. Apenas exportar o caminho no ambiente virtual funcionou para mim.

Para sua informação, sql_config reside dentro do diretório bin.

ac_baz
fonte
-1

Instalar o brew ou apt-get também não é fácil para mim, então baixei o mysql via: https://dev.mysql.com/downloads/connector/python/ , instalei. Portanto, posso encontrar mysql_config neste diretório: / usr / local / mysql / bin

a próxima etapa é:

  1. export PATH = $ PATH: / usr / local / mysql / bin
  2. pip install MySQL-python == 1.2.5
J.Mark
fonte