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 experiencia incoherente con este problema. Me encantaría verlo editado o generalizado si tiene una mejor experiencia con el problema ... aplique un poco de esa TAN mágica.
Nota: Los comentarios del párrafo siguiente se aplicaron 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 32 bits de Python, pero la mayoría de los usuarios promedio (incluido yo mismo) probablemente salte para instalar la versión de 64 bits. de MySQL. Mal movimiento ... elimine la versión de 64 bits si la ha instalado (las instrucciones sobre esta tarea complicada están disponibles en SO aquí ), luego descargue e instale la versión de 32 bits (paquete aquí )
Existen numerosos pasos a seguir sobre cómo crear e instalar las bibliotecas MySQLdb. A menudo tienen diferencias sutiles. Este 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 instalados en Mac.
Paso 1:
Descargue el último adaptador MySQL para Python de SourceForge.
Paso 2:
extraiga su paquete descargado:
tar xzvf MySQL-python-1.2.2.tar.gz
Paso 3:
Dentro de la carpeta, limpia el paquete:
sudo python setup.py clean
PAREJA DE PASOS EXTRA, (de este comentario )
Paso 3b:
elimine todo lo que esté 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 Users / $ USER / .python-eggs
Paso 4:
Originalmente requería editar _mysql.c, pero ahora YA NO ES NECESARIO. La comunidad MySQLdb parece haber solucionado este error ahora.
Paso 5:
Cree un enlace simbólico en lib para apuntar a un subdirectorio llamado mysql. Aquí es donde busca durante la compilación.
sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql
Paso 6:
Edite setup_posix.py y cambie lo siguiente
mysql_config.path = "mysql_config"
a
mysql_config.path = "/ usr / local / mysql / bin / mysql_config"
Paso 7:
En el mismo directorio, reconstruya su paquete (ignore las advertencias que lo acompañan)
sudo python setup.py build
Paso 8:
Instale el paquete y listo.
sudo python setup.py install
Paso 9:
prueba si está funcionando. Funciona si puede importar MySQLdb.
python
>>> import MySQLdb
Paso 10:
Si al intentar importar, recibe un error quejándose de que Library not loaded: libmysqlclient.18.dylib
termina 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 hacerlo import MySQLdb
sin errores.
Sin embargo, un inconveniente 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: UserWarning: El módulo _mysql ya se importó desde /Library/Python/2.5/ site-packages / MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg / _mysql.pyc, pero XXXX / MySQL-python-1.2.3c1 se está agregando 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 cd ..
preparada para el futuro) y se dará cuenta de que necesita salir 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. Edite o proporcione su propia respuesta mejor.
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
. Una vez que ejecuté esto, se importó como se esperaba ... finalmente. Wheewwww. Solo un comentario para aquellos en una posición similar.Una forma rápida y sencilla para Mac OS X 10.8 (Mountain Lion), 10.9 (Mavericks), 10.10 (Yosemite) y 10.11 (El Capitan):
Supongo que tiene XCode, sus herramientas de línea de comandos , Python y MySQL instalados.
Instalar PIP:
Editar ~ / .profile: (puede que no sea necesario en Mac OS X 10.10)
Copie y pegue las siguientes dos líneas
Guardar y Salir. Las palabras posteriores ejecutan el siguiente comando:
Instalar MySQLdb
Para probar si todo funciona bien, intenta
Funcionó de maravilla para mí. Espero que ayude.
Si encuentra un error con respecto a una biblioteca faltante: Biblioteca no cargada: libmysqlclient.18.dylib, entonces debe vincularlo simbólicamente para que le
/usr/lib
guste:fuente
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
comando desde abajo.export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/mysql/lib/
brew install mysql
, no tuve que pasar por el segundo paso.Instale mysql y python a través de Macports Los porteros han hecho todo el trabajo difícil.
debe instalar lo que necesita. (ver Stack overflow para comentarios sobre el servidor mysql )
Si solo necesita conectarse a mysql y no ejecutar un servidor, la primera línea es suficiente.
Macports ahora (principios de 2013) proporcionará descargas binarias para combinaciones comunes de SO y una arquitectura ejecutable, para otros (y si lo solicita) se compilará desde la fuente.
En general, los macports (o fink) ayudan cuando hay bibliotecas complejas, etc. que deben instalarse.
Python solo código y si se pueden configurar dependencias simples de C a través de herramientas de configuración, etc., pero comienza a volverse complejo si mezcla los dos.
fuente
Instalar pip:
Instalar brebaje:
Instale mysql:
Instalar MySQLdb
Si tiene problemas de compilación, intente editar el archivo ~ / .profile como en una de las respuestas aquí.
fuente
pip install mysqlclient
lugar. ¡Trabajos!Aquí hay otro paso que tuve que seguir después de recibir un error al completar el Paso 9:
Referencia: ¡Gracias! http://ageekstory.blogspot.com/2011_04_01_archive.html
fuente
Como se indica en Instalación de MySQL-python en mac :
Entonces pruébalo:
fuente
Acabo de tener este problema (¡de nuevo!) Después de obtener una nueva caja Lion.
La mejor solución que he encontrado (todavía no es 100% óptima, pero funciona):
asegúrese de tener Python de 64 bits. ¿Cómo comprobar si una biblioteca es de 32 bits / 64 bits integrada en Mac OS X?
instale easy_install si no lo tiene. http://packages.python.org/distribute/easy_install.html
instale GCC si no lo tiene.
usted puede conseguirlo mediante la descarga de XCode / Herramientas de desarrollo de Apple - esto es una gran descarga -
... pero en cambio recomiendo este github que tiene lo que necesitas (y no tiene XCode): https://github.com/kennethreitz/osx-gcc-installer
Descargué su PKG prediseñado para lion, https://github.com/downloads/kennethreitz/osx-gcc-installer/GCC-10.7-v2.pkg
asegúrese de haber descargado una versión de 64 BIT de MYSQL Community. (La instalación de DMG es una ruta fácil) http://dev.mysql.com/downloads/mysql/
Establezca rutas de la siguiente manera:
export PATH = $ PATH: / usr / local / mysql-XXXX
exportar DYLD_LIBRARY_PATH = / usr / local / mysql / lib /
exportar ARCHFLAGS = '- arch x86_64'
TENGA EN CUENTA QUE:
¡Instala la bestia!
easy_install MySQL-python
ÚLTIMO PASO:
¡Agregue permanentemente el DYLD_LIBRARY_PATH!
Puede agregarlo a su bash_profile o similar. Este era el paso que faltaba para mí, sin el cual mi sistema seguía insistiendo en varios errores al encontrar _mysql.so y así sucesivamente.
exportar DYLD_LIBRARY_PATH = / usr / local / mysql / lib /
@ richard-boardman, acabo de notar su solución de enlace suave, que en efecto puede estar haciendo lo mismo que hace mi solución PATH ... amigos, lo que sea que funcione mejor para usted.
Mejor referencia: http://activeintelligence.org/blog/archive/mysql-python-aka-mysqldb-on-osx-lion/
fuente
Podría intentar usar el python puro
pymysql
:(O utilícelo
pip
si lo tiene instalado). Luego, agregue esto antes que ustedimport MySQLdb
en su código:fuente
O prueba simple:
Si da un error como el siguiente:
, luego ejecuta esto
fuente
Si está utilizando MySQL de 64 bits, utilizar ARCHFLAGS para especificar la arquitectura de su CPU mientras crea bibliotecas mysql-python funcionaría:
fuente
debería solucionar el problema ya que el sistema no puede encontrar el archivo mysql_config.
fuente
En macos Sierra, esto funciona para mí, donde python es administrado por anaconda:
anaconda search -t conda mysql-python
anaconda show CEFCA/mysql-python
conda install --channel https://conda.anaconda.org/CEFCA mysql-python
Para usar con SQLAlchemy:
fuente
Esta respuesta es una actualización, alrededor de noviembre de 2019. Ninguna de las instalaciones populares de pip le brindará una configuración funcional en MacOS 10.13 (y probablemente también en otras versiones). Aquí hay una forma sencilla de hacer que las cosas funcionen:
Si necesita ayuda para instalar brew, consulte este sitio: https://brew.sh/
fuente
Me encontré con este problema y descubrí que
mysqlclient
necesita saber dónde encontrar openssl, y OSX lo oculta de forma predeterminada.Busque openssl con
brew info openssl
, y luego agregue la ruta a suopenssl
contenedor a su RUTA:Recomiendo agregar eso a su .zshrc o .bashrc para que no tenga que preocuparse por eso en el futuro. Luego, con esa variable exportada (que puede significar cerrar y volver a abrir su sesión de bash), agregue dos variables env más:
Luego, finalmente, ejecuta:
y debería instalarse bien.
Fuente: https://medium.com/@shandou/pipenv-install-mysqlclient-on-macosx-7c253b0112f2
fuente