Actualización para aquellos que usan Python3: Simplemente puede usar conda install mysqlclient
para instalar las bibliotecas necesarias para usar MySQLdb tal como existe actualmente. La siguiente pregunta SO fue una pista útil:Python 3 ImportError:ningún módulo llamado 'ConfigParser'
. La instalación de mysqlclient instalará mysqlclient, mysql-connector y llvmdev (al menos, instaló estas 3 bibliotecas en mi máquina).
Aquí está la historia de mi incoherente experiencia con este problema. Me encantaría verlo editado o generalizado si tienes una mejor experiencia en el tema... aplica un poco de esa magia SO.
Nota:los comentarios del siguiente párrafo se aplican a Snow Leopard, pero no a Lion, que parece requerir MySQL de 64 bits
En primer lugar, el autor (¿todavía?) de MySQLdb dice aquí que uno de los problemas más perniciosos es que OS X viene instalado con una versión de Python de 32 bits, pero la mayoría de los usuarios promedio (incluido yo mismo) probablemente opten por instalar la versión de MySQL de 64 bits. Mal movimiento... elimine la versión de 64 bits si la ha instalado (las instrucciones sobre esta complicada tarea están disponibles en SO aquí ), luego descargue e instale la versión de 32 bits (paquete aquí )
Hay numerosos pasos paso a paso sobre cómo compilar e instalar las bibliotecas MySQLdb. A menudo tienen diferencias sutiles. Esto me pareció el más popular y proporcionó la solución de trabajo. Lo he reproducido con un par de ediciones a continuación
Paso 0: Antes de comenzar, supongo que tiene MySQL, Python y GCC instalado en el mac.
tar xzvf MySQL-python-1.2.2.tar.gz
Paso 3: Dentro de la carpeta, limpia el paquete:
sudo python setup.py clean
UN PAR DE PASOS ADICIONALES, (de este comentario )
Paso 3b: Elimine todo en su directorio MySQL-python-1.2.2/build/* -- no confíe en "python setup.py clean" para que lo haga por usted
Paso 3c: Retire el huevo debajo de Usuarios/$USUARIO/.python-eggs
sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql
Paso 6: Edite setup_posix.py y cambie lo siguiente
mysql_config.ruta ="mysql_config"
a
mysql_config.ruta ="/usr/local/mysql/bin/mysql_config"
Paso 7: En el mismo directorio, reconstruya su paquete (ignore las advertencias que vienen con él)
sudo python setup.py build
Paso 8: Instala el paquete y listo.
sudo python setup.py install
Paso 9: Prueba si está funcionando. Funciona si puedes importar MySQLdb.
python
>>> import MySQLdb
Paso 10: Si al intentar importar recibe un error quejándose de que Library not loaded: libmysqlclient.18.dylib
terminando en:Reason: image not found
necesita crear un enlace simbólico adicional que es:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Entonces debería poder import MySQLdb
sin errores.
Sin embargo, un problema final es que si inicia Python desde el directorio de compilación, obtendrá este error:
/Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3:Advertencia para el usuario:el módulo _mysql ya se importó de /Library/Python/2.5/ site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.pyc, pero se agrega XXXX/MySQL-python-1.2.3c1 a sys.path
Esto es bastante fácil para Google, pero para evitarle problemas, terminará aquí
(o tal vez no... no es una URL particularmente preparada para el futuro) y descubra que necesita cd ..
fuera del directorio de compilación y el error debería desaparecer.
Como escribí en la parte superior, me encantaría ver esta respuesta generalizada, ya que existen muchas otras experiencias específicas de este horrible problema. Edítelo o proporcione su propia mejor respuesta.