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?

usuario904542
fuente
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

amarillion
fuente
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...
xtornasol512
fuente
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.

Pulkit Pahwa
fuente
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ó.

Elliott
fuente
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/
nasowah
fuente
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.

Mayank R Jain
fuente
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
zhaozhi
fuente
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/

samwize
fuente
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

Aka
fuente
El paso 2 me arregló esto.
saltchicken
Esto ha solucionado mi problema que me había molestado durante 3 horas. ¡Muchas gracias!
Yeojin
9

Lo arreglé instalando libmysqlclient:

sudo apt-get install libmysqlclient16-dev
Thoslin
fuente
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.

John Livingston
fuente
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
Rajathithan Rajasekar
fuente
6

En centos 7 esto funciona para mí:

yum install mariadb-devel
pip install mysqlclient
Rajiv Sharma
fuente
5

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

sudo dnf install mysql-devel
Rapaz
fuente
5

Para Alpine Linux:

$ apk add mariadb-dev mariadb-client mariadb-libs

MariaDB es un reemplazo directo para MySQL y se convirtió en el nuevo estándar a partir de Alpine 3.2. Ver https://bugs.alpinelinux.org/issues/4264

aboutaaron
fuente
1
lo que hace que mi imagen alpina sea casi 500MiB, vine a alpina para un tamaño de imagen más pequeño
ospider
También tengo que instalar python3-dev para que la lib pueda compilar
ospider
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.

hkulekci
fuente
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
Schechter
fuente
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
Pequeño cerebro
fuente
3

Necesita instalar el paquete python-dev:

sudo apt-get install python-dev
ebarch
fuente
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.

Gary
fuente
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

Ahsan.Amin
fuente
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.

RunOrVeith
fuente
¿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"
Haidar Zeineddine
fuente
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()

xfdywy
fuente
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í.

volantes
fuente
1

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

Thomas Grainger
fuente
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

Oleg Neumyvakin
fuente
1

Sólo tipo:

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

Esto resolverá estos problemas.

Luciano D. Mota
fuente
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
DachuanZhao
fuente