insertar - ¿Cómo instalar MySQLdb(biblioteca de acceso a datos de Python en MySQL) en Mac OS X?
mysqldb python 3 (12)
Soy un novato de Python, pero acabo de pasar un día trabajando en cómo conseguir que MySQLdb funcione correctamente, y el universo de acuerdo con google incluye numerosas referencias a lo que es un PITA, y un número desorbitado de guías que parecen ser anticuado. Dado que este sitio tiene la intención de abordar este tipo de problemas, y sé que voy a necesitar una referencia a la solución en el futuro, voy a hacer la pregunta, dar mi respuesta y ver qué más flota en el superficie.
¿Entonces la pregunta es cómo hacer que MySQLdb funcione en Mac OS X?
Acabo de tener este problema (¡otra vez!) Después de obtener una nueva caja de León.
La mejor solución que he encontrado (aún no es 100% óptima, pero funciona):
asegúrate de tener Python de 64 bits. ¿Cómo comprobar si una biblioteca tiene 32 bits / 64 bits incorporados en Mac OS X?
instala easy_install si no lo tienes. http://packages.python.org/distribute/easy_install.html
instale GCC si no lo tiene.
puede obtenerlo descargando XCode / Dev Tools de Apple - esta es una gran descarga -
... pero en su lugar, recomiendo este github que tiene lo que necesita (y no tiene XCode): https://github.com/kennethreitz/osx-gcc-installer
Descargué su PKG precompilado 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 bits de la comunidad MYSQL. (La instalación de DMG es una ruta fácil) http://dev.mysql.com/downloads/mysql/
Establezca rutas de la siguiente manera:
PATH de exportación = $ PATH: / usr / local / mysql-XXXX
exportar DYLD_LIBRARY_PATH = / usr / local / mysql / lib /
exportar ARCHFLAGS = ''- arch x86_64''
TENGA EN CUENTA QUE:
1 en mysql-XXXX arriba, XXX es la versión específica que descargó. (Probablemente / usr / local / mysql / también funcionaría, ya que es probable que sea un alias del mismo, pero no pretenderé conocer su configuración)
2 Lo he visto sugiriendo que ARCHFLAGS se establezca en ''-arch i386 -arch x86_64'' pero al especificar solo x86_64 pareció funcionar mejor para mí. (Puedo pensar en algunas razones para esto, pero no son estrictamente relevantes).
¡Instala la bestia!
easy_install MySQL-python
ÚLTIMO PASO:
¡Añade de forma permanente DYLD_LIBRARY_PATH!
Puedes agregarlo a tu bash_profile o similar. Este fue el paso que me faltaba, sin el cual mi sistema siguió insistiendo en varios errores para encontrar _mysql.so y demás.
exportar DYLD_LIBRARY_PATH = / usr / local / mysql / lib /
@ richard-boardman, acaba de notar su solución de enlace suave, que en realidad puede estar haciendo lo mismo que mi solución PATH ... amigos, lo que sea que funcione mejor para usted.
La mejor referencia: http://activeintelligence.org/blog/archive/mysql-python-aka-mysqldb-on-osx-lion/
Aquí está la historia de mi vaga experiencia con este problema. Me encantaría verlo editado o generalizado si tienes una mejor experiencia sobre el tema ... aplica un poco de esa magia SO.
Nota: Los comentarios en el siguiente párrafo 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 here que uno de los problemas más perniciosos es que OS X viene con una versión de Python de 32 bits, pero la mayoría de los medios (yo incluido) probablemente salten para instalar la versión de 64 bits de MySQL Mala jugada ... elimine la versión de 64 bits si la ha instalado (las instrucciones sobre esta tarea complicada están disponibles en SO here ), luego descargue e instale la versión de 32 bits (paquete here )
Hay numerosos pasos por pasos sobre cómo construir e instalar las bibliotecas MySQLdb. A menudo tienen diferencias sutiles. This 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 tienes MySQL, Python y GCC instalados en el mac.
Paso 1: descargue el último MySQLdb de SourceForge.
Paso 2: extrae tu 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 se encuentra en su directorio MySQL-python-1.2.2 / build / *; no confíe en que "python setup.py clean" lo haga por usted
Paso 3c: eliminar el huevo en Users / $ USER / .python-eggs
Paso 4: Edición requerida originalmente _mysql.c, pero ahora ya NO ES NECESARIA. La comunidad MySQLdb parece haber solucionado este error ahora.
Paso 5: cree un enlace simbólico bajo 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: 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 tratar de importar recibe un error quejándose de que la Library not loaded: libmysqlclient.18.dylib
termina con: Reason: image not found
, necesita crear un enlace simbólico adicional que sea:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Debería poder import MySQLdb
sin ningún error.
Un último inconveniente es que si inicias Python desde el directorio de compilación obtendrás este error:
/Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3: UserWarning: Module _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 se está agregando XXXX / MySQL-python-1.2.3c1 a sys.path
Esto es bastante fácil para Google, pero para ahorrarle el problema, terminará here (o tal vez no ... no es una URL especialmente a prueba de futuro) y descubrirá que necesita cd ..
un 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 hay muchas otras experiencias específicas de este horrible problema. Edita o proporciona tu propia mejor respuesta.
Aquí hay otro paso que tuve que pasar, después de recibir un error al completar el Paso 9:
ImportError: dlopen(/Users/rick/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Referencia: ¡Gracias! http://ageekstory.blogspot.com/2011_04_01_archive.html
Como se indica en Instalar MySQL-python en mac :
pip uninstall MySQL-python
brew install mysql
pip install MySQL-python
Entonces pruébalo:
python -c "import MySQLdb"
En macos Sierra este trabajo 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
El para usar con SQLAlchemy:
Python 2.7.13 | Continuum Analytics, Inc. | (predeterminado, 20 de diciembre de 2016, 23:05:08) [GCC 4.2.1 Apple LLVM 6.0 (clang-600.0.57)] compatible en darwin Escriba "ayuda", "derechos de autor", "créditos" o "licencia" para obtener más información información. Anaconda es traído a usted por Continuum Analytics. Por favor visita: http://continuum.io/thanks y https://anaconda.org
>>> de sqlalchemy import *
>>> dbengine = create_engine (''mysql: // ....'')
Instalar pip:
sudo easy_install pip
Instalar brebaje
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
Instalar mysql:
brew install mysql
Instalar MySQLdb
sudo pip install MySQL-python
Si tiene problemas de compilación, intente editar el archivo ~ / .profile como en una de las respuestas aquí.
Instale mysql y python a través de Macports Los porteadores han hecho todo el trabajo difícil.
sudo port install py26-mysql
sudo port install mysql5-server
debería instalar lo que necesita (Consulte Desbordamiento de pila para obtener comentarios sobre el servidor mysql )
Si solo necesita conectarse a mysql y no ejecutar un servidor, entonces la primera línea es suficiente.
Macports ahora (principios de 2013) proporcionará descargas binarias para combinaciones comunes de sistemas operativos una arquitectura ejecutable, para otros (y si lo solicita) se compilará desde la fuente.
En general, macports (o fink) ayudan cuando hay bibliotecas complejas, etc. que necesitan ser instaladas.
Python solo código y si se pueden configurar simples dependencias C a través de setuptools, etc., pero comienza a volverse complejo si mezclas los dos.
O simple intento:
> sudo easy_install MySQL-python
Si da un error como el siguiente:
EnvironmentError: mysql_config no encontrado
, entonces solo ejecuta esto
> export PATH=$PATH:/usr/local/mysql/bin
Podría intentar usar el pymysql
puro-python:
sudo easy_install pymysql
(O use pip
si lo tiene instalado.) Luego, agregue esto antes de import MySQLdb
en su código:
try:
import pymysql
pymysql.install_as_MySQLdb()
except ImportError:
pass
Si está utilizando MySQL de 64 bits, usar ARCHFLAGS para especificar su arquitectura de CPU al compilar bibliotecas de mysql-python haría el truco:
ARCHFLAGS=''-arch x86_64'' python setup.py build
ARCHFLAGS=''-arch x86_64'' python setup.py install
Una forma rápida y fácil para Mac OS X 10.8 (Mountain Lion), 10.9 (Mavericks), 10.10 (Yosemite) y 10.11 (El Capitan):
Supongo que tiene instalado XCode, sus herramientas de línea de comandos , Python y MySQL.
Instalar PIP:
sudo easy_install pip
Editar ~ / .profile: ( Puede que no sea necesario en Mac OS X 10.10)
nano ~/.profile
Copie y pegue las siguientes dos líneas
export PATH=/usr/local/mysql/bin:$PATH export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/
Guardar y Salir. Afterwords ejecuta el siguiente comando:
source ~/.profile
Instalar MySQLdb
sudo pip install MySQL-python
Para probar si todo funciona bien solo intente
python -c "import MySQLdb"
Funcionó como un encanto para mí. Espero que ayude.
Si encuentra un error con respecto a una biblioteca faltante: Biblioteca no cargada: libmysqlclient.18.dylib, entonces tiene que enlazarlo simbólicamente a /usr/lib
así:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
export PATH=$PATH:/usr/local/mysql/bin/
debería solucionar el problema, ya que el sistema no puede encontrar el archivo mysql_config.