Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como instalar o MySQLdb (biblioteca de acesso a dados Python para MySQL) no Mac OS X?


Atualização para quem usa Python3: Você pode simplesmente usar conda install mysqlclient para instalar as bibliotecas necessárias para usar o MySQLdb como ele existe atualmente. A seguinte pergunta SO foi uma pista útil:Python 3 ImportError:Nenhum módulo chamado 'ConfigParser' . A instalação do mysqlclient instalará mysqlclient, mysql-connector e llvmdev (pelo menos, instalou essas 3 bibliotecas na minha máquina).

Aqui está o conto da minha experiência divagante com este problema. Adoraria vê-lo editado ou generalizado se você tiver uma melhor experiência do problema... aplique um pouco dessa mágica SO.

Observação:os comentários no próximo parágrafo se aplicam ao Snow Leopard, mas não ao Lion, que parece exigir MySQL de 64 bits

Primeiro, o autor (ainda?) do MySQLdb diz aqui que um dos problemas mais perniciosos é que o OS X vem instalado com uma versão de 32 bits do Python, mas a maioria dos joes comuns (inclusive eu) provavelmente salta para instalar a versão de 64 bits do MySQL. Má jogada... remova a versão de 64 bits se você a instalou (instruções sobre esta tarefa complicada estão disponíveis em SO aqui ), baixe e instale a versão de 32 bits (pacote aqui )

Existem vários passos sobre como construir e instalar as bibliotecas MySQLdb. Eles geralmente têm diferenças sutis. Isso parecia o mais popular para mim e forneceu a solução de trabalho. Eu o reproduzi com algumas edições abaixo

Etapa 0: Antes de começar, presumo que você tenha MySQL, Python e GCC instalado no mac.

Etapa 1: Faça o download do adaptador MySQL para Python mais recente do SourceForge.

Etapa 2: Extraia seu pacote baixado:
tar xzvf MySQL-python-1.2.2.tar.gz

Etapa 3: Dentro da pasta, limpe o pacote:
sudo python setup.py clean

ALGUMAS ETAPAS EXTRAS, (de este comentário )

Etapa 3b: Remova tudo sob seu diretório MySQL-python-1.2.2/build/* -- não confie no "python setup.py clean" para fazer isso por você

Etapa 3c: Remova o ovo em Users/$USER/.python-eggs

Etapa 4: Originalmente necessário editar _mysql.c, mas agora NÃO É MAIS NECESSÁRIO. A comunidade MySQLdb parece ter corrigido esse bug agora.

Etapa 5: Crie um link simbólico em lib para apontar para um subdiretório chamado mysql. É aqui que ele procura durante a compilação.
sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql

Etapa 6: Edite o setup_posix.py e altere o seguinte

mysql_config.path ="mysql_config"

para

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

Etapa 7: No mesmo diretório, reconstrua seu pacote (ignore os avisos que o acompanham)
sudo python setup.py build

Etapa 8: Instale o pacote e pronto.
sudo python setup.py install

Etapa 9: Teste se está funcionando. Funciona se você puder importar MySQLdb.
python

>>> import MySQLdb

Etapa 10: Se ao tentar importar você receber um erro reclamando que Library not loaded: libmysqlclient.18.dylib terminando com:Reason: image not found você precisa criar um link simbólico adicional que é:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

Você deve então poder import MySQLdb sem nenhum erro.

Um soluço final, porém, é que, se você iniciar o Python a partir do diretório de compilação, receberá este erro:

/Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3:UserWarning:O módulo _mysql já foi importado de /Library/Python/2.5/ site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.pyc, mas XXXX/MySQL-python-1.2.3c1 está sendo adicionado ao sys.path

Isso é muito fácil para o Google, mas para evitar problemas, você acabará aqui (ou talvez não... não um URL particularmente à prova de futuro) e descobrir que você precisa cd .. fora do diretório de compilação e o erro deve desaparecer.

Como escrevi no início, adoraria ver essa resposta generalizada, pois existem inúmeras outras experiências específicas desse problema horrível por aí. Edite ou forneça sua própria resposta melhor.