Acabo de compilar e instalar mysqldb para python 2.7 en mi mac os 10.6. Creé un archivo de prueba simple que importa
import MySQLdb as mysql
En primer lugar, este comando está subrayado en rojo y la información me dice "Importación no resuelta". Luego intenté ejecutar el siguiente código simple de Python
import MySQLdb as mysql
def main():
conn = mysql.connect( charset="utf8", use_unicode=True, host="localhost",user="root", passwd="",db="" )
if __name__ == '__main__'():
main()
Al ejecutarlo recibo el siguiente mensaje de error
Traceback (most recent call last):
File "/path/to/project/Python/src/cvdv/TestMySQLdb.py", line 4, in <module>
import MySQLdb as mysql
File "build/bdist.macosx-10.6-intel/egg/MySQLdb/__init__.py", line 19, in <module>
\namespace cvdv
File "build/bdist.macosx-10.6-intel/egg/_mysql.py", line 7, in <module>
File "build/bdist.macosx-10.6-intel/egg/_mysql.py", line 6, in __bootstrap__
ImportError: dlopen(/Users/toom/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.egg-tmp/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib
Referenced from: /Users/toom/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.egg-tmp/_mysql.so
Reason: image not found
¿Cuál podría ser la solución a mi problema?
EDITAR: En realidad descubrí que la biblioteca se encuentra en / usr / local / mysql / lib. Entonces necesito decirle a mi versión de Pydev Eclipse dónde encontrarlo. ¿Dónde configuro esto?
fuente
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
mysql55
través de MacPorts y para resolver este error:sudo ln -s mysql/libmysqlclient.18.dylib /opt/local/lib/mysql55/libmysqlclient.18.dylib
sudo ln -s /usr/local/mysql-5.5.29-osx10.6-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Mi método preferido es arreglar la biblioteca en lugar de jugar con variables de entorno que pueden o no estar dentro del alcance dependiendo de cómo se ejecute la aplicación. Este es en realidad un proceso bastante simple.
Primero, mire la salida de error para ver dónde se encuentra el módulo python infractor:
Bien, entonces el archivo ofensivo es /Library/Python/2.7/site-packages/_mysql.so
A continuación, descubra dónde _mysql.so cree que debería encontrar libmysqlclient.18.dylib:
Entonces, está buscando libmysqlclient.18.dylib sin información de ruta, arreglemos eso:
Ahora _mysql.so conoce la ruta completa a la biblioteca y todo funciona, independientemente de las variables de entorno.
fuente
Descubrí que había otra solución para este problema en lugar de crear un enlace simbólico.
Establece la ruta a su directorio, donde reside libmysqlclient.18.dylib, a la variable de entorno DYLD_LIBRARY_PATH. Lo que hice fue poner la siguiente línea en mi .bash_profile:
Eso es.
fuente
En mi caso, recibí el error con Mac OS X 10.9 Mavericks. Instalé MySQL Community Server directamente desde el sitio web Oracle / MySQL de DMG.
Todo lo que necesitaba hacer era vincular los archivos lib al directorio / usr / local / lib.
Bonificación: si también está ejecutando Mac OS X, existe una gran herramienta para encontrar archivos como el archivo libmysqlclient.18.dylib, http://apps.tempel.org/FindAnyFile . Así es como encontré originalmente la ubicación del archivo dylib.
fuente
/usr/local/lib
directorio, ¡pero funcionó de maravilla!Descubrí que poner esto en tu .profile o .bashrc (lo que uses) es la forma más fácil de hacerlo, los enlaces sym son desordenados en comparación con mantener rutas en tus archivos fuente.
También en comparación con la respuesta de yoshisurfs, la mayoría de las veces cuando se instala mysql, el directorio mysql debe renombrarse solo para mysql, no el nombre completo del archivo, para facilitar su uso.
fuente
Me he encontrado con esto con un par de entornos virtuales.
Trabajó las dos veces.
fuente
En el complemento pydev eclipse, es posible que desee establecer la variable de entorno para DYLD. La ruta se puede establecer como se muestra en
Instalar mysqldb en leopardo de las nieves
fuente
Para aquellos que usan homebrew, puede solucionar esto con:
fuente
En mi caso, en El Capitan (OSX 10.11), tengo que hacer lo siguiente en
~/.bash_profile
fuente
cuando se encuentre en El Capitán, recibirá un error:
ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted
deberá cerrar la "Protección de integridad del sistema".primero, reinicie y mantenga presionado cmd + R para ingresar al modo de recuperación, luego inicie la terminal y escriba el comando:,
csrutil disable
ahora puede reiniciar e intentar nuevamente.fuente
libmysqlclient.18.dylib
a/usr/local/lib
y agregar la rutaPATH=/usr/local/lib:$PATH
a bash_profile. Me esta funcionando.En la nueva instalación de El Capitan, donde SIP (sin root impide el acceso a usr / lib /) está activado de forma predeterminada y no puede crear el enlace simbólico a menos que esté en modo de recuperación. Como @yannisxu dijo, puede deshabilitar SIP y hacer su enlace simbólico a / usr / lib / local y esto funcionará.
puede usar el siguiente comando en MAC OSX El Capitan en lugar de desactivar SIP:
Solía haber una opción donde puede iniciar sesión como root y esto puede deshabilitar SIP, pero en la versión final que ahora está obsoleta, puede leer más sobre esto aquí: https://forums.developer.apple.com/thread/4686
Pregunta:
Hay un comando nvram boot-args disponible en Developer Beta 1 que puede deshabilitar SIP cuando se ejecuta con privilegios de root:
¿Esta opción de deshabilitar SIP también estará disponible en la versión de lanzamiento de El Capitan? ¿O es estrictamente para las Builds de desarrollador?
Responder:
Este comando nvram boot-args desaparecerá. No estará disponible en la versión de lanzamiento de El Capitan y puede desaparecer antes del final de las versiones beta del desarrollador. Esté atento a las notas de la versión para futuros desarrolladores de Betas.
fuente
Tuve este problema y me llevó un tiempo descubrir cómo solucionarlo.
Mi caso es un poco diferente. Mi servidor MySQL es de la versión 5.1.x. Y de alguna manera actualicé mi MySQL-python de 1.2.3 a 1.2.5. Y seguí recibiendo este problema desde entonces, evento agregué el siguiente enlace suave.
Resulta que para MySQL 5.1.x no hay libmysqlclient.18.dylib, sino solo libmysqlclient.16.dylib. Puede solucionar este problema bajando su MySQL-python a 1.2.3 o actualizando su servidor MySQL a 5.6.x (no he probado 5.5.x.)
Reduje la versión de la biblioteca a 1.2.3 ya que actualizar MySQL no es una opción para mí.
fuente
vaya a http://dev.mysql.com/downloads/connector/c/ y descargue MySQL Connector / C. después de obtener el paquete, cree un nuevo directorio 'mysql', descomprima el archivo del conector Mysql en el directorio mysql, luego, en mysql, cree otro directorio vacío 'build'. Usaremos 'build' para compilar MySQL Connector / C. cd build && cmake ../your-MySQL-Connector-source-dir make && make install después de realizar la instalación, obtendrá un directorio llamado mysql en / usr / local. contiene todos los encabezados y libs que necesita. vaya a este directorio y copie los encabezados y libs en las ubicaciones correspondientes.
fuente
puedes probar:
fuente
Nota sobre el error de MySQL Connector / C en macOS (mi versión actual es 10.13.2), corrige mysql_config y reinstala mysqlclient o MySQL-python, aquí está el detalle
fuente