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.