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

824

Este es el error que obtengo

(mysite)zjm1126@zjm1126-G41MT-S2:~/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)zjm1126@zjm1126-G41MT-S2:~/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?

zjm1126
fuente
1
Vea este hilo: [mysql_config no encontrado al instalar la interfaz de mysqldb python] [1] funcionó para mí :) [1]: stackoverflow.com/questions/7475223/…
Staccato
Soy usuario de MAC OS. Resuelvo este problema con esta pregunta stackoverflow.com/questions/50940302/…
PatricioS

Respuestas:

1398

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

Por ejemplo, en Debian / Ubuntu debes 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
Fbo
fuente
24
Eso todavía creó un error para mí. Yo solía en su apt-get install python-mysqldblugar.
Jonatan Littke
51
mi experiencia 2c: sudo apt-get install libmysqlclient-devfuncionó para mí, sudo apt-get install python-mysqldbno ayudó
Anentropic
20
@JonatanLittke Instalar un tipo global de python-mysqldb va en contra de virtualenv IMO.
fncomp
42
para Mariadb, sudo apt-get install libmariadbclient-devhizo el truco.
yuvilio
11
Si estas soluciones no funcionan para usted, es posible que aún necesite instalar python-dev:apt-get install python-dev
Anoyz
295

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

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)

Chris Villa
fuente
66
Si está utilizando MAMP de bitnami pila uso export PATH=$PATH:/Applications/mampstack-5.3.17-0/mysql/binsi usted está utilizando esta pila MAMP comercial , por el contrario, desinstalarlo y obtener el bitnami porque es una mierda y no incluye las cabeceras de mysql.
Timmmm
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
@Timmmm Solución bastante costosa ya que todas mis bases de datos están en versión oficial: / ¿hay alguna otra forma de solucionar esto?
Volatil3
1
Muy útil. Si usa XAMPP, úselo comoexport PATH=$PATH:/Applications/XAMPP/xamppfiles/bin
Kevin London,
10
Esto finalmente funciona, gracias! Además, si mysqlno está instalado, úselo brew install mysqldonde está la ubicación /usr/local/bin/mysql(o /usr/local/Cellar/mysql/VERSION/bin/si no está vinculado).
Aziz Alto
102
apt-get install libmysqlclient-dev python-dev

Parecía hacer el truco.

Steve Gregory
fuente
2
sí, para mí solo libmysqlclient-dev no fue suficiente, python-dev también faltaba.
Anderson Santos
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!
Hielo
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.
Actualización: para Python3 tienes que instalar python3-dev.
cezar
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
89

Puede haber varias respuestas para el problema anterior, a continuación hay 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
usuario2886440
fuente
Gracias por el consejo de centos. He estado persiguiendo esto toda la mañana.
Pete Magsig
Quizás valga la pena agregar python3-dev/python3-devel
Gergely M
36

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 python2 y 3

pip3 install MySQL-Python
Zaman Afzal
fuente
34

Puedes usar MySQL Connector / Python

Instalación a través de PyPip

pip install mysql-connector-python

Se 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.

ndequeker
fuente
3
Esto es lo único que funcionó para mí cuando me di por vencido en mysqldb y el desastre de mysql_config que faltaba. Funciona bien para mis propósitos.
wh1tney
@wjoba ¿puedes explicar más? Estoy instalando py-mysql2pgsqly encontrando un error de mysql_config. Estoy usando MAMP. ¿Qué hace el conector mysqk?
Volatil3
1
@ Volatil3 mysql-connector-python funcionó bien como un reemplazo inmediato para mysql-python para mí. La instalación de la primera vía pip funcionó sin problemas y eliminó el error mysql_config porque (en palabras del desarrollador) el conector mysql es "Python puro y no necesita ningún otro software MySQL, por lo tanto, no hay bibliotecas y compilaciones de C". Espero que ayude. Pruebe la instalación mencionada en esta solución y vea si aún encuentra el error.
wh1tney
En Ubuntu 14/4, obtengo: No pude encontrar ninguna descarga que satisfaga el requisito mysql-connector-python
Timo
Este comando funcionó para mí después de probar todo lo demás.
Relojes
27

Para usuarios de centos :

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

entonces

pip install MySQL-python


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

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

lancerex
fuente
1
Eso suena como si no tuviera los archivos de inclusión correctos para los que se pipestá instalando el binario de Python . Python normalmente proporciona la ubicación de inclusión; especificar manualmente la ruta más probable es apuntar a la versión incorrecta .
Martijn Pieters
Tuve que hacerlo 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 denied
bennythejudge
18

Intenté instalar mysql-pythonen una instancia de Amazon EC2 Linux y tuve que instalarlos:

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.

Emil Davtyan
fuente
1
Solía: 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
1
dnf install mysql-devel gccfue suficiente para mí, depende del resto
Jens Timmerman
python-develahora dará un error, si usa Python 2.7 intente estopython27-devel
Código Sizzling
8

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
Alexandru Chirila
fuente
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 ... etc) cliente msql!
7yl4r
6

Tratar sudo apt-get build-dep python-mysqldb

KalamHavij
fuente
6

OS X Mavericks

Debido a los cambios en las herramientas de desarrollo de osx mavericks y xcode, puede obtener 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
Thomas Schwärzl
fuente
6

Para Linux

esto funciona para mi

yum install python-devel mysql-devel
penny chan
fuente
5

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

sudo apt-get install libmariadbclient-dev
Dinesh Sharma
fuente
Justo lo que necesito cuando uso Debian 9 Stretch con MariaDB
anhtran
4

Debes instalar el mysqlprimero:

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

Entonces puedes instalar mysqlclient:

pip install  mysqlclient
aeronave
fuente
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, corrió accidentalmente pip uninstall mysql-pythony luego no pudo recuperarse al pip install mysql-pythondar 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.

eMBee
fuente
2

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

Allí debe instalar mariadb-dev con:

apk add mariadb-dev

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

apk add python2 py2-pip gcc python2-dev musl-dev
Alex
fuente
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 el MYSQL-python nuevamente. Que funciono para mi

lakshmankashyap
fuente
1

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

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

Descomprima la fuente, abra 'distribution_setup.py' y edite DEFAULT_VERSION para usar la última versión de las herramientas de distribución, de esta manera:

DEFAULT_VERSION = "0.6.49"

Salvar. Abra el archivo 'site.cfg' y descomente la ruta a mysql_config para que se vea algo así (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 limpia, compila y crea no fallará con el error 'mysql_config' no encontrado. Espero que esto ayude a alguien más a intentar usar sus viejos servidores x :-)

Brad Herdson
fuente
1

Su ruta sudo no conoce su ruta local ... entre en modo de 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.

Paul Kenjora
fuente
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
Albert Chen
fuente
Vea stackoverflow.com/questions/7475223/… No creo que su respuesta ayude
Linus
0

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

Avidan Efody
fuente