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

895

Este es el error que me sale

(mysite)[email protected]:~/zjm_test/mysite$ pip install mysql-python
Downloading/unpacking mysql-python
  Downloading MySQL-python-1.2.3.tar.gz (70Kb): 70Kb downloaded
  Running setup.py egg_info for package mysql-python
    sh: mysql_config: not found
    Traceback (most recent call last):
      File "<string>", line 14, in <module>
      File "/home/zjm1126/zjm_test/mysite/build/mysql-python/setup.py", line 15, in <module>
        metadata, options = get_config()
      File "setup_posix.py", line 43, in get_config
        libs = mysql_config("libs_r")
      File "setup_posix.py", line 24, in mysql_config
        raise EnvironmentError("%s not found" % (mysql_config.path,))
    EnvironmentError: mysql_config not found
    Complete output from command python setup.py egg_info:
    sh: mysql_config: not found

Traceback (most recent call last):

  File "<string>", line 14, in <module>

  File "/home/zjm1126/zjm_test/mysite/build/mysql-python/setup.py", line 15, in <module>

    metadata, options = get_config()

  File "setup_posix.py", line 43, in get_config

    libs = mysql_config("libs_r")

  File "setup_posix.py", line 24, in mysql_config

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

EnvironmentError: mysql_config not found

----------------------------------------
Command python setup.py egg_info failed with error code 1
Storing complete log in /home/zjm1126/.pip/pip.log
(mysite)[email protected]:~/zjm_test/mysite$ pip install mysql-python
Downloading/unpacking mysql-python
  Running setup.py egg_info for package mysql-python
    sh: mysql_config: not found
    Traceback (most recent call last):
      File "<string>", line 14, in <module>
      File "/home/zjm1126/zjm_test/mysite/build/mysql-python/setup.py", line 15, in <module>
        metadata, options = get_config()
      File "setup_posix.py", line 43, in get_config
        libs = mysql_config("libs_r")
      File "setup_posix.py", line 24, in mysql_config
        raise EnvironmentError("%s not found" % (mysql_config.path,))
    EnvironmentError: mysql_config not found
    Complete output from command python setup.py egg_info:
    sh: mysql_config: not found

Traceback (most recent call last):

  File "<string>", line 14, in <module>

  File "/home/zjm1126/zjm_test/mysite/build/mysql-python/setup.py", line 15, in <module>

    metadata, options = get_config()

  File "setup_posix.py", line 43, in get_config

    libs = mysql_config("libs_r")

  File "setup_posix.py", line 24, in mysql_config

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

EnvironmentError: mysql_config not found

----------------------------------------
Command python setup.py egg_info failed with error code 1
Storing complete log in /home/zjm1126/.pip/pip.log

¿Qué puedo hacer para resolver esto?

2
1502

Parece que mysql_config falta en su sistema o el instalador no pudo encontrarlo. Asegúrese de que mysql_config esté realmente instalado.

Por ejemplo, en Debian / Ubuntu debe instalar el paquete:

sudo apt-get install libmysqlclient-dev

Tal vez mysql_config no esté en su camino, será el caso cuando compile usted mismo la suite mysql.

Actualización: para versiones recientes de debian / ubuntu (a partir de 2018) es

sudo apt install default-libmysqlclient-dev
22
  • 25
    Eso todavía me creó un error. Usé en su apt-get install python-mysqldblugar. Jonatan Littke 25 de mayo de 2012 a las 13:58
  • 52
    mi experiencia 2c: sudo apt-get install libmysqlclient-devfuncionó para mí, sudo apt-get install python-mysqldbno ayudóAnentropic 23/07/12 a las 10:54
  • 23
    @JonatanLittke La instalación de un python-mysqldb global va en contra del punto de virtualenv IMO. fncomp 20 de marzo de 2013 a las 5:18
  • 44
    para Mariadb, sudo apt-get install libmariadbclient-devhizo el truco. yuvilio 21 de mayo de 2013 a las 12:09
  • 11
    Si estas soluciones no funcionan para usted, es posible que aún necesite instalar python-dev:apt-get install python-devAnoyz 20 de agosto de 2013 a las 8:36
311

En Mac OS, simplemente ejecuté esto en la terminal para solucionarlo:

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

Esta es la solución más rápida que encontré: la agrega a la ruta, pero creo que es mejor agregarla permanentemente (es decir, agregarla /etc/paths) si planea instalar MySQL-python en otro entorno.

(probado en OSX Mountain Lion)

8
  • 6
    Si está usando la pila MAMP de bitnami, use export PATH=$PATH:/Applications/mampstack-5.3.17-0/mysql/binSi está usando esta pila MAMP comercial , por otro lado, desinstálela y obtenga la de bitnami porque es una mierda y no incluye los encabezados de mysql. Timmmm 8/10/12 a las 11:20
  • 3
    Para que la ruta sea permanente, agréguela al final de /etc/paths: deberá abrir una nueva ventana de terminal para acceder a la nueva ruta. rojoca 13/08/2013 a las 21:36
  • @Timmmm Solución bastante cara ya que todas mis bases de datos están en la versión oficial: / ¿hay alguna otra forma de solucionar esto? Volatil3 27 feb 2014 a las 20:30
  • 1
    Muy útil. Si está utilizando XAMPP, utilícelo comoexport PATH=$PATH:/Applications/XAMPP/xamppfiles/binKevin London 31 de mayo de 2014 a las 0:29
  • 10
    ¡Esto finalmente funciona gracias! Además, si mysqlno está instalado, use brew install mysqlel lugar donde está la ubicación /usr/local/bin/mysql(o /usr/local/Cellar/mysql/VERSION/bin/si no tiene un enlace simbólico). Aziz Alto 6/04/2015 a las 22:47
104
apt-get install libmysqlclient-dev python-dev

Parecía hacer el truco.

6
  • 2
    sí, para mí solo libmysqlclient-dev no fue suficiente, también faltaba python-dev. Anderson Santos 4 de julio de 2013 a las 4:55
  • En Ubuntu 12.04 (preciso) (32 bits) después de la actualización in situ desde 10.04 (lúcido), solo esto resolvió estos errores. ¡Especialmente el "python-dev" adicional! Ice 19 de enero de 2014 a las 14:43
  • También funcionó para mí: python-dev fue la última pieza del rompecabezas. Ya tenía instalado python-mysqldb, por lo que definitivamente no es todo lo que se necesita. Tim S. 19 de septiembre de 2014 a las 17:44
  • Actualización: para Python3 tienes que instalar python3-dev. cezar 6 feb 2018 a las 14:48
  • Necesitaba hacer esto y también instalar gccpara obtener una instalación exitosa. Además, es probable que sea mejor no hacerlo python-dev, pero especificar la versión particular tal como python2.7-dev, python3.6-dev, etc.Tim Tisdall 25/01/19 a las 15:13
102

Tal vez haya varias respuestas para el problema anterior, a continuación se muestra una solución agregada.

Para Ubuntu:

$ sudo apt update
$ sudo apt install python-dev
$ sudo apt install python-MySQLdb

Para CentOS:

$ yum install python-devel mysql-devel
2
  • Gracias por el consejo centos. He estado persiguiendo esto toda la mañana. Pete Magsig 23 feb 2019 a las 17:10
  • 1
    Quizás valga la pena agregar python3-dev/python3-develGergely M 19 de mayo de 2020 a las 13:10
41

Si está en MAC, instale esto globalmente

brew install mysql

luego exportar ruta como esta

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

Que globalmente o en tu venv lo que quieras

pip install MySQL-Python

Nota: globalmente para python3 ya que Mac puede tener tanto python2 como 3

pip3 install MySQL-Python
1
38

Puede utilizar MySQL Connector / Python

Instalación a través de PyPip

pip install mysql-connector-python

Puede encontrar más información en el blog de anuncios beta de MySQL Connector / Python 1.0.5 .

En Launchpad hay un buen ejemplo de cómo agregar, editar o eliminar datos con la biblioteca.

4
  • 3
    Esto es lo único que funcionó para mí cuando renuncié a mysqldb y al desastre mysql_config que faltaba. Funciona bien para mis propósitos. wh1tney 13/08/2013 a las 15:42
  • @wjoba, ¿puedes explicarme más? Estoy instalando py-mysql2pgsqly encontrando un error de mysql_config. Estoy usando MAMP. ¿Qué hace el conector mysqk? Volatil3 27/0214 a las 20:35
  • 1
    @ Volatil3 mysql-connector-python funcionó bien como un reemplazo listo para usar para mysql-python para mí. La instalación del primero a través de pip funcionó sin problemas y eliminó el error mysql_config porque (en las propias palabras del desarrollador) el conector mysql es "Python puro y no necesita ningún otro software MySQL, por lo que no hay bibliotecas C ni compilación". Espero que ayude. Pruebe la instalación mencionada en esta solución y vea si aún encuentra el error. wh1tney 28/0214 a las 21:06
  • En Ubuntu 14/4, obtengo: No se pudo encontrar ninguna descarga que satisfaga el requisito mysql-connector-pythonTimo 1 de noviembre de 2014 a las 9:45
27

Para usuarios de centos :

yum install -y mysql-devel python-devel python-setuptools

luego

pip install MySQL-python


Si esta solución no funciona , e imprima el error de compilación gcc como:
_mysql.c:29:20: error: Python.h: No such file or directory

Debe especificar la ruta de Python.h, así:
pip install --global-option=build_ext --global-option="-I/usr/include/python2.6" MySQL-python

2
  • 1
    Eso suena como si no tuviera los archivos de inclusión correctos para el binario de Python para el que se pipestá instalando. Python en sí mismo normalmente proporciona la ubicación de inclusión; lo más probable es que la especificación manual de la ruta esté apuntando a la versión incorrecta . Martijn Pieters 1 de enero de 2017 a las 11:20
  • Tuve que hacer una sudo pip install MySQL-pythondebido a un error:copying build/lib.linux-x86_64-2.7/_mysql_exceptions.py -> /usr/lib64/python2.7/site-packages error: /usr/lib64/python2.7/site-packages/_mysql_exceptions.py: Permission deniedbennythejudge 30 oct 2017 a las 14:28
19

Estaba intentando instalar mysql-pythonen una instancia de Amazon EC2 Linux y tuve que instalar estos:

yum install mysql mysql-devel mysql-common mysql-libs gcc

Pero luego recibí este error:

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

Entonces instalé:

yum install python-devel

Y eso hizo el truco.

3
  • 1
    Usé: sudo yum install mysql mysql-devel mysql-common mysql-libs gcc fuera de mi virtualenv. Luego, volví a mi entorno virtual y corrí pip install mysql-pythony funcionó. tandy 12 feb.15 a las 20:42
  • 1
    dnf install mysql-devel gccfue suficiente para mí, depende del restoJens Timmerman 10 feb 2016 a las 17:06
  • python-develahora dará un error, si usa Python 2.7, intente estopython27-develSizzling Code 24 feb.20 a las 17:44
9

Para cualquiera que esté usando MariaDB en lugar de MySQL, la solución es instalar el libmariadbclient-devpaquete y crear un enlace simbólico al archivo de configuración con el nombre correcto.

Por ejemplo, esto funcionó para mí:

ln -s /usr/bin/mariadb_config /usr/bin/mysql_config
1
  • 2
    Esta es una respuesta subestimada útil en cualquier caso en el que uno quiera conectarse a un socket de base de datos conocido y específico. Me ayudó a conectarme a una base de datos mysql independiente. ¡La mayoría de las soluciones aquí solo recomiendan reinstalar (o instalar un segundo o tercer cliente ... etc) msql! 7yl4r 9/03/2017 a las 21:27
9

Para Linux

esto funciona para mi

yum install python-devel mysql-devel
6

Tratar sudo apt-get build-dep python-mysqldb

6

OS X Mavericks

Debido a cambios dentro de las herramientas de desarrollo de osx mavericks y xcode, es posible que obtenga el error en la instalación

clang: error: unknown argument: '-mno-fused-madd' [-Wunused-command-line-argument-hard-error-in-future]

por lo tanto, use:

sudo ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install mysql-python
0
5

para mariadb instale lib mariadb client-dev en lugar de libmysqlclient-dev

sudo apt-get install libmariadbclient-dev
1
  • Justo lo que necesito cuando uso Debian 9 Stretch con MariaDBanhtran 6/04/18 a las 5:34
4

Debes instalar el mysqlprimero:

yum install python-devel mysql-community-devel -y

Entonces puedes instalar mysqlclient:

pip install  mysqlclient
3

Tuve el mismo problema en Terraform: contenedor ligero. Está basado en Alpine.

Allí tienes que instalar mariadb-dev con:

apk add mariadb-dev

Pero eso no es suficiente porque también se pierden todas las demás dependencias:

apk add python2 py2-pip gcc python2-dev musl-dev
2

a veces, el error depende de la causa real. Tuvimos un caso en el que mysql-python se instaló a través del paquete debian python-mysqldb.

un desarrollador que no sabía esto, ejecutó accidentalmente pip uninstall mysql-pythony luego no pudo recuperarse pip install mysql-pythondando el error anterior.

pip uninstall mysql-pythonhabía destruido el contenido del paquete debian y, por supuesto, pip install mysql-pythonfalló porque el paquete debian no necesitaba ningún archivo de desarrollo.

la solución correcta en ese caso fue apt-get install --reinstall python-mysqldbque restauró mysql-python a su estado original.

2

Secuencia a seguir.

pip install mysqlclient
sudo apt-get install python3-dev libmysqlclient-dev
pip install configparser 
sudo cp /usr/lib/python3.6/configparser.py /usr/lib/python3.6/ConfigParser.py 

Luego intente instalar MYSQL-python nuevamente. Eso funcionó para mi

1

Tuve un problema similar al intentar instalar en OS X Server 10.6.8. Esto es lo que tenía que hacer. Utilizando:

MySQL-python 1.2.4b4 (fuente) MySQL-5.6.19 (instalador binario) Python 2.7 (instalador binario) NOTA: Instalando en virtualenv ...

Descomprima el código fuente, abra 'distribuir_setup.py' y edite DEFAULT_VERSION para usar la última versión de las herramientas de distribución, así:

DEFAULT_VERSION = "0.6.49"

Ahorrar. Abra el archivo 'site.cfg' y elimine el comentario de la ruta a mysql_config para que se parezca a (consulte su propia ruta a mysql_config):

# The path to mysql_config.
# Only use this if mysql_config is not on your PATH, or you have some weird
# setup that requires it.
mysql_config = /usr/local/mysql/bin/mysql_config

Ahora, limpiar, construir y hacer no fallará con el error 'mysql_config' no encontrado. Espero que esto ayude a alguien más a intentar hacer uso de sus antiguos xserves :-)

1

Su ruta sudo no conoce su ruta local ... entre en modo superusuario, agregue la ruta e instálela desde allí.

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

Y ya está funcionando en OSX. Ahora tienes una Python global actualizada.

1

si instala MySQL-python en su entorno virtual, debe verificar la versión de pip, si la versión es anterior a 9.0.1, actualícela

pip install --upgrade pip
1
0

en MacOS Mojave, mysql_config se encuentra en / usr / local / bin / en lugar de / usr / local / mysql / bin como se señaló anteriormente, por lo que no es necesario agregar nada a la ruta.

0

En mi caso, mi base de datos se está ejecutando en un contenedor y mi aplicación de matraz se está ejecutando en otro contenedor cuando intenté actualizar el código, la aplicación se rompió con un error

   Complete output from command python setup.py egg_info:
/bin/sh: 1: mysql_config: not found
/bin/sh: 1: mariadb_config: not found
/bin/sh: 1: mysql_config: not found
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/tmp/pip-build-bya8e734/mysqlclient/setup.py", line 15, in <module>
    metadata, options = get_config()
  File "/tmp/pip-build-bya8e734/mysqlclient/setup_posix.py", line 65, in get_config
    libs = mysql_config("libs")
  File "/tmp/pip-build-bya8e734/mysqlclient/setup_posix.py", line 31, in mysql_config
    raise OSError("{} not found".format(_mysql_config_path))
OSError: mysql_config not found

La clave en el seguimiento de la pila es

/bin/sh: 1: mysql_config: not found

porque donde se está ejecutando mi aplicación de matraz no tiene el cliente mysql configurado correctamente, así que primero instalé el servidor mysql y luego lo instalé

sudo apt-get install mysql-server-5.7 -y

Luego inició MySQL

[email protected]:~/Documents/clients/HR/DevopsSimulator/web$ sudo systemctl start mysql

Luego instale el paquete flask-mysql y esta vez funcionó

[email protected]:~/Documents/clients/HR/DevopsSimulator/web$ sudo pip3 install flask-mysqldb

Este es un caso diferente, pero publicando aquí porque puede haber otra persona en el mundo que enfrenta el mismo problema.

0

En Mac:

brew install mysql-client

localizar mysql

mdfind mysql | grep bin

luego agregar a la ruta

export PATH=$PATH:/usr/local/Cellar/mysql-client/8.0.23/bin/

o permanentemente

echo "export PATH=$PATH:/usr/local/Cellar/mysql-client/8.0.23/bin/" >> ~/.zshrc
source ~/.zshrc
0

escribir el 27 de agosto de 2021

mi versión de macos es BigSur (14.4) y la versión de mysql es mysql8. Parece que en la versión superior de mysql, eliminan los my_config.harchivos pero cambian a mysql.h.

por lo que sus muchachos deberían ejecutar el siguiente shell:

cd /usr/local/include/mysql
cp mysql.h my_config.h

después de eso, corre pip install MySQL-pythony todo estará bien.