Mac OS X - EnvironmentError: mysql_config no encontrado

121

Primero que nada, sí, ya he visto esto:

pip install mysql-python falla con EnvironmentError: mysql_config no encontrado

El problema

Estoy intentando usar Django en un proyecto de Google App Engine. Sin embargo, no he podido comenzar porque el servidor no se inicia correctamente debido a:

ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

Investigué un poco y todo apuntaba a tener que instalar Mysql-python, ya que aparentemente no está en mi sistema. De hecho, intenté desinstalarlo y obtuve esto:

Cannot uninstall requirement mysql-python, not installed

Siempre que intento instalarlo a través de:

sudo pip install MySQL-python

Recibo un error que indica:

raise EnvironmentError("%s not found" % (mysql_config.path,))
EnvironmentError: mysql_config not found

Ya intenté ejecutar:

export PATH=$PATH:/usr/local/mysql/bin

pero eso no pareció ayudar, ya que volví a ejecutar el comando de instalación y aún fallaba.

¿Algunas ideas?

Tenga en cuenta que no estoy en un virtualenv.

daniel_c05
fuente
Siempre puede ir al archivo que genera el EnvironmentErrore imprimir información de depuración más útil, como os.getcwd(). también puede agregar un pdb.set_trace()y averiguar cosas.
ealfonso

Respuestas:

340

Ok, bueno, antes que nada, déjame comprobar si estoy en la misma página que tú:

  • Instalaste Python
  • Lo hiciste brew install mysql
  • Lo hiciste export PATH=$PATH:/usr/local/mysql/bin
  • Y finalmente, lo hizo pip install MySQL-Python(o pip3 install mysqlclientsi usa Python 3)

Si siguió todos esos pasos en el mismo orden y aún recibe un error, siga leyendo hasta el final; sin embargo, si no siguió estos pasos exactos, intente seguirlos desde el principio.

Entonces, siguió los pasos y aún recibe un error, bueno, hay algunas cosas que puede probar:

  1. Intente ejecutar which mysql_configdesde bash. Probablemente no se encuentre. Es por eso que la compilación tampoco lo encuentra. Intente correr locate mysql_configy vea si algo regresa. La ruta a este binario debe estar en la variable de entorno $ PATH de su shell, o debe estar explícitamente en el archivo setup.py del módulo, asumiendo que está buscando ese archivo en un lugar específico.

  2. En lugar de usar MySQL-Python, intente usar 'mysql-connector-python', se puede instalar usando pip install mysql-connector-python. Puede encontrar más información sobre esto aquí y aquí .

  3. Busque manualmente la ubicación de 'mysql / bin', 'mysql_config' y 'MySQL-Python', y agregue todos estos a la variable de entorno $ PATH.

  4. Si todas estas sugerencias no, entonces usted podría intentar instalar 'mysql' usando MacPorts, en cuyo caso el archivo 'mysql_config' en realidad se llama 'mysql_config5', y en este caso, usted tendría que hacer esto después de instalar: export PATH=$PATH:/opt/local/lib/mysql5/bin. Puedes encontrar más detalles aquí .

Nota 1: He visto a algunas personas decir que instalar python-devy libmysqlclient-devtambién ayudar, sin embargo, no sé si estos paquetes están disponibles en Mac OS.

Note2: Además, asegúrese de intentar ejecutar los comandos como root.

Obtuve mis respuestas de (además de mi cerebro) estos lugares (tal vez podrías echarles un vistazo, para ver si ayudarían): 1 , 2 , 3 , 4 .

Esperaba haber ayudado y estaría feliz de saber si algo de esto funcionó o no. Buena suerte.

Vadorequest
fuente
2
Gran explicación, FWIW en Linux, instalar python-dev y libmysqlclient-dev suele ser lo único que hay que hacer para que funcione, pero en osx todo lo que necesitaba hacer era actualizar mi baño. Creo que en linux puede instalar mysql sin obtener los deps de python para mysql-python si no instala las bibliotecas de desarrollo indicadas. (Cometí ese error tantas veces, lol)
Iain Duncan
1
Después de actualizar a Yosemite, ahora también se queja de que falta "stdio.h". Puede solucionarlo yendo aquí: stackoverflow.com/questions/19580758/…
Mihai Oprea
4
Correr lo brew install mysqlarregló. Además, este comando which mysql-configno funcionó para mí, pero lo which mysql_confighizo.
Chad
1
También tuve que agregar esta línea a mi .bash_profilearchivo:export DYLD_LIBRARY_PATH=/usr/local/Cellar/mysql/5.7.9/lib/
JeffThompson
2
Tuve que señalar la instalación de cervezasexport PATH=$PATH:/usr/local/Cellar/mysql/5.7.20/bin
Climbs_lika_Spyder
6

Había estado depurando este problema desde siempre: 3 horas y 17 minutos. Lo que me molestó particularmente fue que ya tenía sql instalado en mi sistema a través de un trabajo uni anterior, pero pip / pip3 no lo reconocía. Estos hilos anteriores y muchos otros que busqué en Internet fueron útiles para aclarar el problema, pero en realidad no resolvieron las cosas.

RESPONDER

Pip busca binarios de mysql en el directorio Homebrew que se encuentra en relación con Macintosh HD @

/usr/local/Cellar/

así que descubrí que esto requiere que hagas algunos cambios

Paso 1: descargue MySql si aún no lo ha hecho https://dev.mysql.com/downloads/

Paso 2: Ubíquelo en relación con Macintosh HD y cd

/usr/local/mysql/bin

Paso 3: Una vez allí, abra el terminal y use un editor de texto de su elección; yo mismo soy un chico neovim, así que escribí (no viene automáticamente con Mac ... otra historia para otro día)

nvim mysql_config

Paso 4: Verá aproximadamente en la línea 112

# Create options 
libs="-L$pkglibdir"
libs="$libs -l "

Cambiar a

# Create options 
libs="-L$pkglibdir"
libs="$libs -lmysqlclient -lssl -lcrypto"

* notará que este archivo tiene acceso de solo lectura, por lo que si usa vim o neovim

:w !sudo tee %

Paso 5: Dirígete al directorio de inicio y edita el archivo .bash_profile

cd ~

Luego

nvim .bash_profile

y añadir

export PATH="/usr/local/mysql/bin:$PATH"

al archivo y luego guardar

Paso 6: en relación con Macintosh HD, busque rutas y agréguelas

cd /private/etc/

luego

nvim paths

y añadir

/usr/local/mysql/bin

* nuevamente notará que este archivo tiene acceso de solo lectura, por lo que si usa vim o neovim

:w !sudo tee % 

luego

cd ~

luego actualice la terminal con sus cambios ejecutando

source .bash_profile

Finalmente

pip3 install mysqlclient

Y Viola. Recuerda que es una vibra.

Trevor James Oluotch
fuente
Mi libsinterior mysql_configya estaba como se describe en la sección "Cambiar a". Sin embargo, agregar el PATH a private/etcayudó a permitir que la instalación global de mysqlclienteso fallara antes.
martin-martin
5

Si no desea instalar mysql completo, podemos solucionar esto simplemente instalando mysqlclient brew install mysqlclient Una vez que se complete cmd, le pedirá que agregue la siguiente línea a ~/.bash_profile:

echo 'export PATH="/usr/local/opt/mysql-client/bin:$PATH"' >> ~/.bash_profile

Cierre la terminal e inicie una nueva terminal y continúe con pip install mysqlclient

Arun
fuente
3

Estoy ejecutando Python 3.6 en MacOS Catalina. Mi problema fue que intenté instalar mysqlclient==1.4.2.post1y sigue arrojando el error mysql_config no encontrado.

Estos son los pasos que tomé para resolver el problema.

  1. Instale mysql-connector-c usando brew (si ya tiene mysql instale unlink primero brew unlink mysql) -brew install mysql-connector-c
  2. Abra mysql_config y edite el archivo alrededor de la línea 112
# Create options 
libs="-L$pkglibdir"
libs="$libs -lmysqlclient -lssl -lcrypto"
  1. brew info openssl - esto le dará más información sobre lo que debe hacerse para poner openssl en PATH
  2. en relación con el paso 3, debe hacer esto para poner openssl en PATH - echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
  3. para que los compiladores encuentren openssl - export LDFLAGS="-L/usr/local/opt/openssl/lib"
  4. para que los compiladores encuentren openssl - export CPPFLAGS="-I/usr/local/opt/openssl/include"
azmirfakkri
fuente
¡Gracias! Probé tantas cosas y tu método funcionó para mí.
Yagimutsu
2

También esto sucede cuando estaba instalando mysqlclient,

$ pip install mysqlclient

Como dijo el usuario 3429036,

$ brew install mysql
AndreL
fuente
1

Esta respuesta es para usuarios de MacOS que no instalaron desde brewsino desde el oficial .dmg/.pkg. Ese instalador no puede editar su PATH, lo que hace que las cosas se salgan de la caja:

  1. Todos los comandos de MySQL como mysql, mysqladmin, mysql_config, etc, no se puede encontrar, y como resultado:
  2. el "Panel de preferencias de MySQL" no aparece en Preferencias del sistema, y
  3. no puede instalar ninguna API que se comunique con MySQL, incluyendo mysqlclient

Lo que tiene que hacer es agregar la bincarpeta MySQL (generalmente /usr/local/mysql/binen su PATHagregando esta línea en su ~/.bash_profilearchivo:

export PATH="/usr/local/mysql/bin/:$PATH"

Luego debe volver a cargar su ~/.bash_profilepara que el cambio entre en vigencia en su sesión de Terminal actual:

source ~/.bash_profile

mysqlclientSin embargo, antes de la instalación , debe aceptar la licencia de XcodeBuild:

sudo xcodebuild -license

Siga sus instrucciones para cerrar la sesión de su familia, después de lo cual debería poder instalar mysqlclientsin problemas:

pip install mysqlclient

Después de instalar eso, debe hacer una cosa más para corregir un error de tiempo de ejecución que se envía con MySQL ( Biblioteca dinámica libmysqlclient.dylibno encontrada ), agregando esta línea a la ruta de las bibliotecas dinámicas de su sistema:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/:$DYLD_LIBRARY_PATH

Zhanwen Chen
fuente
Vi su respuesta después de encontrar los binarios en el disco al ejecutar sudo lsof -i :3306para ver el PID del proceso activo de MySQL y luego ejecutarlo sudo -P <pid>para ver sus archivos abiertos. Esto surgió con /usr/local/mysql-8.0.18-macos10.14-x86_64/binlo que agregué $PATHy ¡ listo !
Neil C. Obremski
0

Si ha instalado mysql usando Homebrew especificando una versión, mysql_config estaría presente aquí. - /usr/local/Cellar/[email protected]/5.6.47/bin

puede encontrar la ruta del bin sql usando el comando ls en el directorio / usr / local /

/usr/local/Cellar/mysql@5.6/5.6.47/bin

Agregue la ruta al perfil de bash como este.

nano ~/.bash_profile

export PATH="/usr/local/Cellar/[email protected]/5.6.47/bin:$PATH"
mohammed_ayaz
fuente
0

El problema en mi caso fue que estaba ejecutando el comando dentro de un entorno virtual de Python y no tenía la ruta a / usr / local / mysql / bin, aunque lo puse en el archivo .bash_profile. Simplemente exportar la ruta en el entorno virtual funcionó para mí.

Para su información, sql_config reside dentro del directorio bin.

ac_baz
fuente
-1

Instalar brew o apt-get tampoco es fácil para mí, así que descargué mysql a través de: https://dev.mysql.com/downloads/connector/python/ , lo instalé. Entonces puedo encontrar mysql_config en este directorio: / usr / local / mysql / bin

el siguiente paso es:

  1. export PATH = $ PATH: / usr / local / mysql / bin
  2. pip instalar MySQL-python == 1.2.5
J.Mark
fuente