mysql_config no encontrado al instalar la interfaz de python mysqldb


478

Estoy tratando de ejecutar un script Python en el servidor Linux al que estoy conectado a través de ssh. El script usa mysqldb. Tengo todos los demás componentes que necesito, pero cuando intento instalar mySQLdb a través de las herramientas de configuración de esta manera :,

python setup.py install

Me sale el siguiente informe de error relacionado con el mysql_configcomando.

sh: mysql_config: command not found
Traceback (most recent call last):
  File "setup.py", line 15, in <module>
    metadata, options = get_config()
  File "/usr/lib/python2.5/MySQL-python-1.2.3/setup_posix.py", line 43, in get_config
    libs = mysql_config("libs_r")
  File "/usr/lib/python2.5/MySQL-python-1.2.3/setup_posix.py", line 24, in mysql_config
    raise EnvironmentError("%s not found" % (mysql_config.path,))
EnvironmentError: mysql_config not found

¿Alguien más ha encontrado este error y, de ser así, cómo lo resolvió / qué puedo hacer para instalar con éxito mysqldb?


1
Hola, @ user904542: he editado tu pregunta para que sea un poco más conciso y obtengas algunas respuestas :) Si no te gusta o quieres proporcionar detalles adicionales, hay un enlace de edición directamente debajo de tu pregunta que puedes puede usar para retroceder a su original o agregar a los cambios que he realizado.

3
Me encontré exactamente con el mismo problema, porque instalé mysql desde la fuente. si lo hace también, simplemente ejecute algo como esto para que mysql_config esté disponible: sudo ln -s / usr / local / mysql / bin / mysql_config / usr / bin / mysql_config o agregue / usr / local / mysql / bin / a su ruta.
Thi Duong Nguyen

Si ya instaló mysql, el comentario anterior de Thi Duong Nguyen resuelve el problema creando un enlace simbólico al archivo mysql_config en el directorio / usr / bin, que se encuentra en la ruta que buscará Python.
Alex Boschmans

2
solo haz esto ------------- apt-get install python-mysqldb
shadow0359

La simulación de @AlexBoschmans /usr/binestá mal, es usr/local/my...la respuesta de Thi.
Timo

Respuestas:


701

mySQLdb es una interfaz de python para mysql, pero no es mysql en sí. Y aparentemente mySQLdb necesita el comando 'mysql_config', por lo que debe instalarlo primero.

¿Puede confirmar que instaló o no mysql, ejecutando "mysql" desde el shell? Eso debería darle una respuesta que no sea "mysql: comando no encontrado".

¿Qué distribución de Linux estás usando? Mysql está preempaquetado para la mayoría de las distribuciones de Linux. Por ejemplo, para debian / ubuntu, instalar mysql es tan fácil como

sudo apt-get install mysql-server

mysql-config está en un paquete diferente, que se puede instalar desde (nuevamente, suponiendo debian / ubuntu):

sudo apt-get install libmysqlclient-dev

si está usando mariadb, la caída en reemplazo de mysql, luego ejecute

sudo apt-get install libmariadbclient-dev

Referencia: https://github.com/JudgeGirl/Judge-sender/issues/4#issuecomment-186542797


1
Lectura de listas de paquetes ... Hecho Creación del árbol de dependencia Lectura de información de estado ... Hecho Nota, seleccionando libmysqlclient15-dev en lugar de libmysqlclient-dev Algunos paquetes no se pudieron instalar. Esto puede significar que ha solicitado una situación imposible o, si está utilizando la distribución inestable, algunos paquetes requeridos aún no se han creado o se han eliminado de Incoming. La siguiente información puede ayudar a resolver la situación: Los siguientes paquetes tienen dependencias insatisfechas: libmysqlclient15-dev: Depende: zlib1g-dev pero no se instalará E: Paquetes rotos
user904542

2
¿Debería 'sudo apt-get install mysql' ser 'sudo apt-get install mysql-server'?
Kohanz

44
Tenga en cuenta que para Debian es sudo apt-get install mysql-serverysudo apt-get install mysql-client
Marc Juchli

2
¿Podemos finalmente admitir que 'pip' es un fracaso colosal? Errores como este son tan dolorosos, y parecen suceder con la mayoría de los paquetes. Python necesita urgentemente una nueva solución para la gestión de paquetes.
Eddie Sullivan

3
Para mí en Debian fue libmysqlclient-dev. De hecho, he instalado libmariadbclient-dev libmysqlclient-dev
mirek el

188

Estaba instalando python-mysqlen Ubuntu 12.04 usando

pip install mysql-python

Primero tuve el mismo problema:

Not Found "mysql_config"

Esto funciono para mi

$ sudo apt-get install libmysqlclient-dev

Entonces tuve este problema:

...
_mysql.c:29:20: error fatal: Python.h: No existe el archivo o el directorio

compilación terminada.

error: command 'gcc' failed with exit status 1

Entonces intenté con

apt-get install python-dev

Y luego fui feliz :)

pip install mysql-python
    Installing collected packages: mysql-python
      Running setup.py install for mysql-python
        building '_mysql' extension
        gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Dversion_info=(1,2,4,'beta',4) -D__version__=1.2.4b4 -I/usr/include/mysql -I/usr/include/python2.7 -c _mysql.c -o build/temp.linux-x86_64-2.7/_mysql.o -DBIG_JOINS=1 -fno-strict-aliasing -g
        In file included from _mysql.c:44:0:
        /usr/include/mysql/my_config.h:422:0: aviso: se redefinió "HAVE_WCSCOLL" [activado por defecto]
        /usr/include/python2.7/pyconfig.h:890:0: nota: esta es la ubicación de la definición previa
        gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro build/temp.linux-x86_64-2.7/_mysql.o -L/usr/lib/x86_64-linux-gnu -lmysqlclient_r -lpthread -lz -lm -lrt -ldl -o build/lib.linux-x86_64-2.7/_mysql.so

Successfully installed mysql-python
Cleaning up...

1
Funciona también en openSUSE, donde "libmysqlclient-dev" se convierte en "libmysqlclient-devel". Ahora el paquete pip se instala bien. Gracias.
pbarill

¡Gracias! Funciona también en Ubuntu 14.04.1 LTS
Krasimir

la instalación de encabezados de desarrollo de python resolvió el error faltante de Python.h. Gracias.
Natus Drew

3
si usa python3.x, intentado con apt-get install python3-dev.
Legolas Bloom

Esto no funcionó para mí el 14.04 - "E: El paquete 'python-dev' no tiene candidato para la instalación"
Rene Wooller

46

(Específico para Mac OS X)

He intentado muchas cosas, pero este conjunto de comandos finalmente me funcionó.

  1. Instalar en pc mysql
    brew install mysql
  2. brew unlink mysql
  3. brew install mysql-connector-c
  4. Agregue la carpeta bin de mysql a PATH
    export PATH=/usr/local/Cellar/mysql/8.0.11/bin:$PATH
  5. mkdir /usr/local/Cellar/lib/
  6. Crea un enlace simbólico
    sudo ln -s /usr/local/Cellar/mysql/8.0.11/lib/libmysqlclient.21.dylib /usr/local/Cellar/lib/libmysqlclient.21.dylib
  7. brew reinstall openssl( fuente )
  8. Finalmente, instale mysql-client
    LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/ pip install mysqlclient

Actualización: en caso de que esto no funcione, @vinyll sugiere ejecutar brew link mysqlantes del paso 8.


2
simplemente aplicando los pasos 1-4 luego funcionó. ¡Gracias!
kujiy

Para el Paso 4, use brew info mysqlpara obtener la ruta real / correcta a la instalación de mysql. Luego, para que el PATHcambio persista, realice el export PATH..en su ~ / .bash_profile.
Gino Mempin

paso 1-4 con brew link --overwrite mysql-connector-ctrabajos en mi Mac
Hambre

Finalmente, funciona en mi Catalina. El uso de especificar open ssl es muy importante.
feliz el

44
Tuve que hacer un brew link mysqlpaso anterior al 8 para que funcione.
Vinilo

37

En Red Hat tuve que hacer

sudo yum install mysql-devel gcc gcc-devel python-devel
sudo easy_install mysql-python

Entonces funcionó.


3
Trabajó para mí en CentOS 7:yum install MySQL-python
hudolejev

2
Si es necesario instalar MySQL-pythoncomo un paquete de Python, o está utilizando virtualenv, esto podría ayudar: yum install mysql-devel; venv/bin/pip install MySQL-python.
hudolejev

2
Si usa MariaDB en CentOS 7, ejecute sudo yum install mariadb-develprimero, luego puede instalar mysqlclient porpip install mysqlclient
Belter

¿de dónde sacaste gcc-devel rpm?
Fayaz

yum install mysql-develCentos 8
Diego Andrés Díaz Espinoza

33

Lo siguiente funcionó para mí en Ubuntu 12.04 LTS:

apt-get install libmysqlclient-dev python-dev

Aunque funcionó, seguí adelante para hacer lo siguiente:

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

27

Recibí el mismo error al intentar instalar mysql-python.

Así es como lo arreglé.

sudo PATH=/usr/local/mysql/bin/:$PATH pip install mysql-python

El problema era que el instalador no pudo encontrar mysql_config en la ruta predeterminada. Ahora puede ... y funcionó ...

 15 warnings generated.
    clang -bundle -undefined dynamic_lookup -Wl,-F. build/temp.macosx-10.8-intel-2.7/_mysql.o -L/usr/local/mysql/lib -lmysqlclient_r -lz -lm -lmygcc -o build/lib.macosx-10.8-intel-2.7/_mysql.so -arch x86_64

Successfully installed mysql-python
Cleaning up...

Espero que esto ayude.

Gracias.


Estaba teniendo el mismo problema al instalar MySQL localmente en una Mac con OSX 10.9.4 (Mavericks). Esta solución también funcionó para mí.
Deependir el

20

Solucioné este problema con los siguientes pasos:

sudo apt-get install libmysqlclient-dev
sudo apt-get install python-dev
sudo python setup.py install

1
Cuando ejecute> = Debian Stretch, asegúrese de instalar default-libmysqlclient-dev, ya que el libmysqlclient-devpaquete normal no tiene candidato de instalación.
Bono

19

Los comandos (también mysql) mPATH pueden faltar.

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


11

Paso 1: - Instala Python3 y Python3-dev Both

sudo apt-get install python3 python3-dev

Paso 2: - Instala Python y Mysql Connector

sudo apt-get install libmysqlclient-dev

Paso 3: - Instalar el cliente MySQL Python

sudo apt-get install mysqlclient

Esto resolverá su problema


El paso 2 me arregló esto.
saltchicken

Esto ha solucionado mi problema que me había molestado durante 3 horas. ¡Muchas gracias!
Yeojin

10

Si está en macOS y ya está instalado mysql@5.7 a través de brew install:

  1. brew install mysql-connector-c
  2. brew unlink mysql@5.7
  3. brew link --overwrite --dry-run mysql@5.7 primero, para ver qué enlaces simbólicos se sobrescriben
  4. brew link --overwrite --force mysql@5.7 para sobrescribir realmente enlaces simbólicos relacionados con mysql con mysql@5.7
  5. pip install mysqlclient

9

Lo arreglé instalando libmysqlclient:

sudo apt-get install libmysqlclient16-dev

9

El MySQL-pythonpaquete está utilizando el mysql_configcomando para aprender sobre la mysqlconfiguración en su host. Su anfitrión no tiene elmysql_config comando.

El paquete de bibliotecas de desarrollo MySQL (MySQL-devel-xxx) de dev.mysql.com proporciona este comando y las bibliotecas que necesita el paquete MySQL-python. Los MySQL-develpaquetes se encuentran en el área de descarga del servidor de la comunidad. Los nombres de los paquetes de la biblioteca de desarrollo MySQL comienzan con MySQL-devely varían según la versión de MySQL y la plataforma Linux (p.MySQL-devel-5.5.24-1.linux2.6.x86_64.rpm . .)

Tenga en cuenta que no necesita instalar el servidor mysql.


8

El paquete libmysqlclient-dev está en desuso, así que use el siguiente comando para solucionarlo.

El paquete libmysqlclient-dev no está disponible, pero otro paquete hace referencia a él. Esto puede significar que falta el paquete, ha quedado obsoleto o solo está disponible desde otra fuente

sudo apt-get install default-libmysqlclient-dev

6

En centos 7 esto funciona para mí:

yum install mariadb-devel
pip install mysqlclient

5

En mi máquina Fedora 23 tuve que ejecutar lo siguiente:

sudo dnf install mysql-devel


4

Creo que las siguientes líneas se pueden ejecutar en la terminal

 sudo ln -s /usr/local/zend/mysql/bin/mysql_config /usr/sbin/

Este directorio mysql_config es para el servidor zend en MacOSx. Puedes hacerlo para Linux como las siguientes líneas

sudo ln -s /usr/local/mysql/bin/mysql_config /usr/sbin/

Este es el directorio predeterminado de Linux MySQL.


4

Tuve estos problemas y los resolví si agregué un enlace simbólico a mysql_config.

Había instalado mysql con homebrew y vi esto en la salida.

Error: The `brew link` step did not complete successfully

Dependiendo de cómo lo haya conseguido mysql, estará en diferentes lugares. En mi caso, una /usr/local/Cellar/mysql
vez que sepa dónde está, debería poder hacer un enlace simbólico a donde Python lo está buscando. /usr/local/mysql

Esto funcionó para mí.

ln -s /usr/local/Cellar/mysql/<< VERSION >>/bin/mysql_config   /usr/local/mysql/bin/mysql_config

4

Yo tuve el mismo problema. Lo resolví siguiendo este tutorial para instalar Python con python3-dev en Ubuntu 16.04:

sudo apt-get update
sudo apt-get -y upgrade
sudo apt-get install -y python3-pip
sudo apt-get install build-essential libssl-dev libffi-dev python3-dev

Y ahora puede configurar su entorno virtual:

sudo apt-get install -y python3-venv
pyvenv my_env
source my_env/bin/activate

3

Necesita instalar el paquete python-dev:

sudo apt-get install python-dev

2

sudo apt-get install python-mysqldb

Python 2.5? Parece que está utilizando una versión muy antigua de Ubuntu Server (¿Hardy 8.04?). Confirme qué versión de Linux utiliza el servidor.

Búsqueda de python-mysql en la base de datos del paquete ubuntu

Alguna información adicional:

Desde el archivo README de mysql-python -

Red Hat Linux .............

MySQL-python está preempaquetado en Red Hat Linux 7.xy versiones posteriores. Esto incluye Fedora Core y Red Hat Enterprise Linux. También puede crear sus propios paquetes RPM como se describe anteriormente.

Debian GNU / Linux ................

Empaquetado como python-mysqldb_ ::

# apt-get install python-mysqldb

O usa Synaptic.

.. _ python-mysqldb: http://packages.debian.org/python-mysqldb

Ubuntu ......

Lo mismo que con Debian.

Nota al pie: si realmente está utilizando una distribución de servidor anterior a Ubuntu 10.04, entonces no tiene soporte oficial y debería actualizarse más pronto que tarde.


Puedo confirmar para Debian 10 sudo apt-get install python-mysqldb
Tedo Vrbanec

Esto es todo lo que necesita hacer: dev.mysql.com/doc/connector-python/en/…
Abhinandan Dubey

2

Este método es solo para aquellos que saben que Mysql está instalado pero todavía no se puede encontrar mysql_config. Esto sucede si la instalación de Python no puede encontrar mysql_config en la ruta de su sistema, lo que ocurre principalmente si ha realizado la instalación a través de .dmg Mac Package o si ha instalado alguna ruta personalizada. La forma más fácil y documentada por MySqlDB es cambiar el sitio.cfg . Encuentre el mysql_config que probablemente esté en / usr / local / mysql / bin / y cambie la variable, es decir, mysql_config como se muestra a continuación y vuelva a ejecutar la instalación. No olvide descomentarlo quitando "#"

Cambiar debajo de la línea

"#mysql_config = / usr / local / bin / mysql_config"

a

"mysql_config = / usr / local / mysql / bin / mysql_config"

dependiendo de la ruta en su sistema.

Por cierto, utilicé la instalación de Python después de cambiar el sitio.cfg

sudo /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python setup.py install


2

Hasta ahora, todas las soluciones (Linux) requieren sudoderechos de root para instalar. Aquí hay una solución si no tiene derechos de root y sin ellos sudo. (no sudo apt install ...):

  1. Descargue el archivo .deb de libmysqlclient-dev, por ejemplo, de este espejo
  2. Navegue hasta el archivo descargado y ejecute dpkg -x libmysqlclient-dev_<version tag>.deb .Esto extraerá una carpeta llamadausr .
  3. Enlace simbólico ./usr/bin/mysql_configa un lugar que se encuentra en su $PATH:

    ln -s `pwd` /usr/bin/mysql_config FOLDER_IN_YOUR_PATH

  4. Ahora debería poder encontrar mysql_config

Probado en Ubuntu 18.04.


¿Funciona esto en CentOS 7? Suponiendo que no tengo acceso root o dpkg instalado, ¿cómo debo abordarlo?
Sohil

No es necesario ser root mientras trabaje en su propio entorno virtual
BlackBear el

2

Para macOS Mojave, se requería una configuración adicional, para que los compiladores encuentren openssl, es posible que deba configurar:

export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"

2

Creo que la forma más conveniente de resolver este problema en 2020 es usar otro paquete de Python. No necesitamos instalar ningún otro software binario.

Prueba esto

pip install mysql-connector-python

y entonces

import mysql.connector

mydb = mysql.connector.connect(
          host="",
          user="",
          passwd="",
          database=""
          )      
cursor = mydb.cursor( buffered=True)
cursor.execute('show tables;')
cursor.execute('insert into test values (null, "a",10)')
mydb.commit()
mydb.disconnect()


1

Encontré el mismo problema, acabo de agregar la ruta donde * mysql_config * residía en la variable de entorno PATH y funcionó para mí.


1

sudo apt-get build-dep python-mysqldb instalará todas las dependencias para construir el paquete desde PIP / easy_install


1

Como el error real es

gcc ... -I/usr/include/python2.7 ...

_mysql.c:29:20: error: Python.h: No such file or directory

y si no puede instalar los paquetes python-dev o python-devel, puede descargar el archivo con la versión necesaria de las fuentes de python desde http://hg.python.org/ y colocar los archivos de encabezados en la carpeta adecuada para incluir


1

Sólo tipo:

$ sudo apt-get install python-dev
$ venv/bin/pip install MySQL-python

Esto resolverá estos problemas.


3
Si obtiene un error con mysql_config, instale esto:sudo apt-get install libmysqlclient-dev
Luciano D. Mota

1

En CentOS 7, se deben hacer las siguientes cosas:

#step1:install mysql 
https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/

#step2:
sudo yum install mysql-devel
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.