Acabei de compilar e instalar o mysqldb para python 2.7 no meu mac os 10.6. Criei um arquivo de teste simples que importa
import MySQLdb as mysql
Em primeiro lugar, este comando está sublinhado em vermelho e as informações dizem "Importação não resolvida". Então tentei executar o seguinte código python simples
import MySQLdb as mysql
def main():
conn = mysql.connect( charset="utf8", use_unicode=True, host="localhost",user="root", passwd="",db="" )
if __name__ == '__main__'():
main()
Ao executá-lo, recebo a seguinte mensagem de erro
Traceback (most recent call last):
File "/path/to/project/Python/src/cvdv/TestMySQLdb.py", line 4, in <module>
import MySQLdb as mysql
File "build/bdist.macosx-10.6-intel/egg/MySQLdb/__init__.py", line 19, in <module>
\namespace cvdv
File "build/bdist.macosx-10.6-intel/egg/_mysql.py", line 7, in <module>
File "build/bdist.macosx-10.6-intel/egg/_mysql.py", line 6, in __bootstrap__
ImportError: dlopen(/Users/toom/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.egg-tmp/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib
Referenced from: /Users/toom/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.egg-tmp/_mysql.so
Reason: image not found
Qual pode ser a solução para o meu problema?
EDIT: Na verdade, descobri que a biblioteca está em / usr / local / mysql / lib. Então, preciso dizer à minha versão do pydev eclipse onde encontrá-la. Onde eu coloco isso?
fonte
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
mysql55
via MacPorts e para resolver este erro fez:sudo ln -s mysql/libmysqlclient.18.dylib /opt/local/lib/mysql55/libmysqlclient.18.dylib
sudo ln -s /usr/local/mysql-5.5.29-osx10.6-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Meu método preferido é realmente corrigir a biblioteca em vez de jogar com variáveis de ambiente que podem ou não estar no escopo, dependendo de como o aplicativo é executado. Este é realmente um processo bastante simples.
Primeiro, observe a saída de erro para ver onde o módulo python incorreto está localizado:
Ok, o arquivo incorreto é /Library/Python/2.7/site-packages/_mysql.so
Em seguida, descubra onde _mysql.so acha que deve encontrar o libmysqlclient.18.dylib:
Então, ele está procurando libmysqlclient.18.dylib sem informações de caminho, vamos corrigir isso:
Agora _mysql.so conhece o caminho completo para a biblioteca e tudo funciona, independentemente das variáveis de ambiente.
fonte
Descobri que havia outra solução para esse problema, em vez de criar um link simbólico.
Você define o caminho para seu diretório, onde reside libmysqlclient.18.dylib, como variável de ambiente DYLD_LIBRARY_PATH. O que fiz foi colocar a seguinte linha no meu .bash_profile:
É isso aí.
fonte
No meu caso, estava recebendo o erro no Mac OS X 10.9 Mavericks. Instalei o MySQL Community Server diretamente do site Oracle / MySQL da DMG.
Tudo o que eu precisava fazer era vincular os arquivos lib ao diretório / usr / local / lib.
Bônus: Se você também estiver executando o Mac OS X, há uma ótima ferramenta para localizar arquivos como o arquivo libmysqlclient.18.dylib, http://apps.tempel.org/FindAnyFile . Foi assim que encontrei originalmente o local do arquivo dylib.
fonte
/usr/local/lib
diretório, mas funcionou como um encanto!Descobri que colocar isso no seu .profile ou .bashrc (o que você usar) é a maneira mais fácil de fazer isso, os links sym são confusos em comparação com os caminhos dos arquivos de origem.
Também comparado com a resposta do yoshisurfs, na maioria das vezes quando o mysql é instalado, o diretório mysql deve ser renomeado para apenas mysql, não o nome completo do arquivo, para facilitar o uso.
fonte
Eu me deparei com isso em alguns ambientes virtuais.
Trabalhou as duas vezes.
fonte
No plugin eclipse pydev, convém definir a variável de ambiente para DYLD. O caminho pode ser definido como mostrado em
Instale o mysqldb no snow leopard
fonte
Para aqueles que usam homebrew, você pode corrigir isso com:
fonte
No meu caso, em El Capitan (OSX 10.11), devo fazer o seguinte em
~/.bash_profile
fonte
quando você estiver em El Capitan, receberá um erro: é
ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted
necessário fechar o "System Integrity Protection".primeiro, reinicie e segure cmd + R para entrar no modo de recuperação, inicie o terminal e digite o comando:,
csrutil disable
agora você pode reiniciar e tente novamente.fonte
libmysqlclient.18.dylib
para/usr/local/lib
e adicionar caminhoPATH=/usr/local/lib:$PATH
para bash_profile. Está funcionando para mim.Na nova instalação do El Capitan, em que o SIP (sem raiz impede o acesso a usr / lib /) está ativado por padrão e você não pode criar o link simbólico, a menos que esteja no modo de recuperação. Como o @yannisxu disse, você pode desativar o SIP e fazer o seu link simbólico para / usr / lib / local, e isso funcionará.
você pode usar o seguinte comando no MAC OSX El Capitan em vez de desativar o SIP:
Costumava haver uma opção em que você pode fazer login como root e isso pode desativar o SIP, mas na versão final agora obsoleta, você pode ler mais sobre isso aqui: https://forums.developer.apple.com/thread/4686
Questão:
Existe um comando nvram boot-args disponível no Developer Beta 1 que pode desativar o SIP quando executado com privilégios de root:
Essa opção de desativar o SIP também estará disponível na versão do El Capitan? Ou isso é estritamente para o Developer Builds?
Responda:
Este comando nvram boot-args desaparecerá. Ele não estará disponível na versão de lançamento do El Capitan e poderá desaparecer antes do final do desenvolvedor Betas. Fique de olho nas notas de versão do futuro Developer Betas.
fonte
Eu tive esse problema e demorei um pouco para descobrir como consertar isso.
Meu caso é um pouco diferente. Meu servidor MySQL é da versão 5.1.x. E de alguma forma eu atualizei meu MySQL-python de 1.2.3 para 1.2.5. E eu continuava recebendo esse problema desde então, caso eu adicionasse o seguinte link.
Acontece que para o MySQL 5.1.x não existe libmysqlclient.18.dylib, mas apenas libmysqlclient.16.dylib. Você pode corrigir esse problema fazendo o downgrade do seu MySQL-python para 1.2.3 ou atualizando o servidor MySQL para 5.6.x (eu não tentei o 5.5.x.)
Fiz o downgrade da biblioteca para a versão 1.2.3, pois a atualização do MySQL não é uma opção para mim.
fonte
vá para http://dev.mysql.com/downloads/connector/c/ e faça o download do MySQL Connector / C. depois de obter o pacote, crie um novo diretório 'mysql', descompacte o arquivo do Mysql Connector no diretório mysql e, em seguida, no mysql, crie outro diretório vazio 'build'.we usará' build 'para criar o MySQL Connector / C. cd build && cmake ../your-MySQL-Connector-source-dir make && make install após make install, você receberá um diretório chamado mysql em / usr / local. ele contém todos os cabeçalhos e bibliotecas que você precisa. vá para este diretório e copie os cabeçalhos e bibliotecas para os locais correspondentes.
fonte
podes tentar:
fonte
Observe o bug do MySQL Connector / C no macOS (minha versão atual é 10.13.2), corrija o mysql_config e reinstale o mysqlclient ou o MySQL-python, aqui estão os detalhes
fonte