Instalar o driver Mysql para Python no Mac Snow Leopard
Marcos Sousa | January 2, 2010Já tem algum certo tempo que gostaria de compartilhar esta experiência. Durante os tempos vagos, estou buscando além de ler livros, estou também buscando conhecer novas linguagens. Sempre que posso estou dedicando um certo tempo para aprender algo a mais em Ruby e Python. Como desenvolvi na grande maioria dos casos para web, escolhi o Ruby on Rails e Django como o foco inicial dos estudos.
O meu primeiro problema encontrado com Python foi quando eu pensei em persistir os dados no Mysql. É uma tarefa relativamente simples, porém devido a versão incorreta do Mysql para a versão do sistema operacional, colocar o driver no “classpath” do python me rendeu uma certa dor de cabeça. Usando o Mac OS X 10.6, também conhecido como Snow Leopard, eu tinha o Mysql a versão x86 instalada. O correto é ter a versão x86_x64.
Como um bom desenvolvedor preguiçoso, resolvi criar um script shell para não ter problemas ao ter que reinstalar o driver em novas ocasiões. Seguindo as recomendações iniciais do site oficial do driver a primeira versão do script foi algo semelhante, ao script abaixo:
1 2 3 4 5 6 7 | #!/usr/bin/env bash curl -o MySQL-python-1.2.3c1.tar.gz http://ufpr.dl.sourceforge.net/project/mysql-python/mysql-python-test/1.2.3c1/MySQL-python-1.2.3c1.tar.gz tar -vzxf MySQL-python-1.2.3c1.tar.gz cd MySQL-python-1.2.3c1 python setup.py build python setup.py install |
É importante lembrar que é preciso ter o gcc para executar o script acima. Para isto basta instalar o XCode disponível como pacote opcional no DVD de instalação do mac, ou baixado através da página de download oficial. Executando a instrução abaixo para certificar que a instalação foi bem sucedida
1 | >>> import MySQLdb |
Me deparei com o seguinte erro:
1 2 3 4 5 6 7 8 | import sys, pkg_resources, imp Traceback (most recent call last): File “”, line 1, in File “MySQLdb/__init__.py”, line 19, in import _mysql File “build/bdist.macosx-10.5-x86/egg/_mysql.py”, line 7, in File “build/bdist.macosx-10.5-x86/egg/_mysql.py”, line 6, in __bootstrap__ ImportError: dynamic module does not define init function (init_mysql) |
Após olhar atentamente a documentação do driver, listas de discussões e blogs notei que a versão do Mysql era origem do problema. Diante disso, criei um script para desinstalar o mysql:
1 2 3 4 5 6 7 8 9 | #!/usr/bin/env bash /Library/StartupItems/MySQLCOM/MySQLCOM stop rm /usr/local/mysql rm -rf /usr/local/mysql* rm -rf /Library/StartupItems/MySQLCOM rm -rf /Library/PreferencePanes/My* sudo rm -rf /Library/Receipts/mysql* sudo rm -rf /Library/Receipts/MySQL* # Editar o arquivo /etc/hostconfig e remover a linha MYSQLCOM=-YES- |
Feito isto, instalei novamente o Mysql na versão 5.5 x86_x64. Depois disso, apenas para certificar que estava executando o script correto, adicionei uma flag dizendo a versão para qual o driver era destinado. As duas últimas linhas do primeiro script foram substituídas por estas:
1 2 | ARCHFLAGS='-arch x86_64' python setup.py build ARCHFLAGS='-arch x86_64' python setup.py install |
Nota: apenas desinstalar o mysql que requer a execução como super usuário.
Fica a dica para que possa ajudar alguém que esteja iniciando e que encontre o mesmo problema.






O que eu fiz para funcionar foi instalar o Bundle de desenvolvimento do 10.4. Esse Bundle vem no XCode, e na instalação você pode selecionar isso.
Olá Felipe,
Valeu pela dica. Depois vou testar sua solução também.
Tentei rodar esse script mas nao funcionou, ocorreu um erro quando fui executer o ‘python setup.py build’ e ‘python setup.py install’, e o erro foi o seguinte
“from setuptools import setup, Extension
ImportError: No module named setuptools”
vc sabe o que é isso e como resolver?