mysql_config introuvable lors de l'installation de l'interface python mysqldb

478

J'essaie d'obtenir un script Python à exécuter sur le serveur Linux auquel je suis connecté via ssh. Le script utilise mysqldb. J'ai tous les autres composants dont j'ai besoin, mais quand j'essaie d'installer mySQLdb via setuptools comme ceci :,

python setup.py install

J'obtiens le rapport d'erreur suivant lié à la mysql_configcommande.

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

Quelqu'un d'autre a-t-il rencontré cette erreur et si oui, comment l'avez-vous résolue / que puis-je faire pour réussir l'installation de mysqldb?

user904542
la source
1
Salut @ user904542 - J'ai édité votre question pour, espérons-le, être un peu plus concise et obtenir des réponses :) Si vous ne l'aimez pas ou si vous souhaitez fournir des détails supplémentaires, il y a un lien d'édition directement sous votre question que vous peut être utilisé pour revenir à l'original ou ajouter aux modifications que j'ai apportées.
3
J'ai rencontré exactement le même problème, car j'ai installé mysql à partir des sources. si vous le faites aussi, lancez simplement quelque chose comme ceci pour rendre mysql_config disponible: sudo ln -s / usr / local / mysql / bin / mysql_config / usr / bin / mysql_config ou ajoutez / usr / local / mysql / bin / à votre chemin.
Thi Duong Nguyen
Si vous avez déjà installé mysql, le commentaire ci-dessus de Thi Duong Nguyen résout le problème en créant un lien symbolique vers le fichier mysql_config dans le répertoire / usr / bin, qui se trouve dans le chemin que python recherchera.
Alex Boschmans
2
il suffit de faire cela ------------- apt-get install python-mysqldb
shadow0359
@AlexBoschmans symlinking /usr/binest faux, c'est usr/local/my...voir la réponse de Thi.
Timo

Réponses:

701

mySQLdb est une interface python pour mysql, mais ce n'est pas mysql lui-même. Et apparemment mySQLdb a besoin de la commande 'mysql_config', donc vous devez d'abord l'installer.

Pouvez-vous confirmer que vous avez installé ou non mysql lui-même, en exécutant "mysql" à partir du shell? Cela devrait vous donner une réponse autre que "mysql: command not found".

Quelle distribution Linux utilisez-vous? Mysql est pré-packagé pour la plupart des distributions Linux. Par exemple, pour debian / ubuntu, installer mysql est aussi simple que

sudo apt-get install mysql-server

mysql-config est dans un paquet différent, qui peut être installé à partir de (encore une fois, en supposant debian / ubuntu):

sudo apt-get install libmysqlclient-dev

si vous utilisez mariadb, remplacez mysql, puis lancez

sudo apt-get install libmariadbclient-dev

Référence: https://github.com/JudgeGirl/Judge-sender/issues/4#issuecomment-186542797

amarillion
la source
1
Lecture des listes de packages ... Terminé Construction de l'arborescence des dépendances Lecture des informations d'état ... Terminé Remarque, sélection de libmysqlclient15-dev au lieu de libmysqlclient-dev Certains packages n'ont pas pu être installés. Cela peut signifier que vous avez demandé une situation impossible ou si vous utilisez la distribution instable que certains packages requis n'ont pas encore été créés ou retirés de Incoming. Les informations suivantes peuvent aider à résoudre la situation: Les packages suivants ont des dépendances non satisfaites: libmysqlclient15-dev: Dépend: zlib1g-dev mais il ne sera pas installé E:
Packages
2
'Sudo apt-get install mysql' devrait-il être 'sudo apt-get install mysql-server'?
Kohanz
4
Notez que pour Debian c'est sudo apt-get install mysql-serveretsudo apt-get install mysql-client
Marc Juchli
2
Pouvons-nous enfin admettre que «pip» est un échec colossal? Des erreurs comme celle-ci sont une telle douleur, et elles semblent se produire avec la majorité des packages. Python a grandement besoin d'une nouvelle solution pour la gestion des packages.
Eddie Sullivan du
3
Pour moi sur Debian, c'était libmysqlclient-dev. En fait, j'ai installé les deux libmariadbclient-dev libmysqlclient-dev
mirek
188

J'installais python-mysqlsur Ubuntu 12.04 en utilisant

pip install mysql-python

J'ai d'abord eu le même problème:

Not Found "mysql_config"

Cela a fonctionné pour moi

$ sudo apt-get install libmysqlclient-dev

Ensuite, j'ai eu ce problème:

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

J'ai ensuite essayé avec

apt-get install python-dev

Et puis j'étais content :)

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
la source
1
Fonctionne aussi sur openSUSE, où "libmysqlclient-dev" devient "libmysqlclient-devel". Maintenant, le paquet pip s'installe correctement. Merci.
pbarill
Merci! Fonctionne aussi sur Ubuntu 14.04.1 LTS
Krasimir
l'installation des en-têtes de développement python a résolu l'erreur Python.h manquante. Merci.
Natus Drew
3
si vous utilisez python3.x, essayé avec apt-get install python3-dev.
Legolas Bloom
Cela n'a pas fonctionné pour moi le 14.04 - "E: le package 'python-dev' n'a pas de candidat d'installation"
Rene Wooller
46

(Spécifique à Mac OS X)

J'ai essayé beaucoup de choses, mais ces commandes ont finalement fonctionné pour moi.

  1. Installer mysql
    brew install mysql
  2. brew unlink mysql
  3. brew install mysql-connector-c
  4. Ajoutez le dossier bin mysql à PATH
    export PATH=/usr/local/Cellar/mysql/8.0.11/bin:$PATH
  5. mkdir /usr/local/Cellar/lib/
  6. Créer un lien symbolique
    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( source )
  8. Enfin, installez mysql-client
    LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/ pip install mysqlclient

Mise à jour: si cela ne fonctionne pas, @vinyll suggère de s'exécuter brew link mysqlavant l'étape 8.

Pulkit Pahwa
la source
2
il suffit d'appliquer l'étape 1-4 puis de travailler. Merci!
kujiy
Pour l'étape 4, utilisez brew info mysqlpour obtenir le chemin réel / correct pour l'installation de mysql. Ensuite, pour que le PATHchangement persiste, faites le export PATH..dans votre ~ / .bash_profile.
Gino Mempin
étape 1-4 avec des brew link --overwrite mysql-connector-ctravaux sur mon Mac
Faim
Enfin, cela fonctionne sur mon Catalina. Utiliser spécifier open ssl est très important.
plus heureux
4
J'ai dû faire un brew link mysqlavant l'étape 8 pour le faire fonctionner.
vinyll
37

Sur Red Hat je devais faire

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

Ensuite, cela a fonctionné.

Elliott
la source
3
A travaillé pour moi sur CentOS 7:yum install MySQL-python
hudolejev
2
Si vous devez installer MySQL-pythonun package Python, ou utilisez virtualenv, cela pourrait aider: yum install mysql-devel; venv/bin/pip install MySQL-python.
hudolejev
2
Si vous utilisez MariaDB sur CentOS 7, exécutez d' sudo yum install mariadb-develabord, puis vous pouvez installer mysqlclient parpip install mysqlclient
Belter
d'où avez-vous obtenu le rpm de gcc-devel?
Fayaz
yum install mysql-develCentos 8
Diego Andrés Díaz Espinoza
33

Ce qui suit a fonctionné pour moi sur Ubuntu 12.04 LTS:

apt-get install libmysqlclient-dev python-dev

Tout cela a fonctionné, j'ai quand même continué à faire ce qui suit:

export PATH=$PATH:/usr/local/mysql/bin/
nasowah
la source
27

J'ai eu la même erreur en essayant d'installer mysql-python.

C'est ainsi que je l'ai corrigé.

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

Le problème était que le programme d'installation n'a pas pu trouver le mysql_config dans le chemin par défaut. Maintenant ça peut .. et ça a marché ..

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

J'espère que cela t'aides.

Merci.

Mayank R Jain
la source
J'avais le même problème lors de l'installation de MySQL localement sur un Mac exécutant OSX 10.9.4 (Mavericks). Cette solution a également fonctionné pour moi.
Deepend
20

J'ai résolu ce problème avec les étapes suivantes:

sudo apt-get install libmysqlclient-dev
sudo apt-get install python-dev
sudo python setup.py install
zhaozhi
la source
1
Lorsque vous exécutez> = Debian Stretch, assurez-vous d'installer default-libmysqlclient-dev, car le libmysqlclient-devpaquet normal n'a pas de candidat à l'installation.
Bono
19

Les commandes (mysql aussi) mPATH peuvent être manquantes.

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

samwize
la source
11

Étape 1: - Installez Python3 et Python3-dev Both

sudo apt-get install python3 python3-dev

Étape 2: - Installez le connecteur Python et Mysql

sudo apt-get install libmysqlclient-dev

étape3: - Installer le client python mysql

sudo apt-get install mysqlclient

Cela résoudra votre problème

Alias
la source
L'étape 2 a corrigé cela pour moi.
poulet salé
Cela a résolu mon problème qui m'avait mis sur écoute pendant 3 heures .. Merci beaucoup !!!
Yeojin
10

Si vous êtes sur macOS et que vous avez déjà installé [email protected] via brew install:

  1. brew install mysql-connector-c
  2. brew unlink [email protected]
  3. brew link --overwrite --dry-run [email protected] tout d'abord, pour voir quels liens symboliques sont remplacés
  4. brew link --overwrite --force [email protected] pour remplacer réellement les liens symboliques liés à mysql avec [email protected]
  5. pip install mysqlclient
Rizky Luthfianto
la source
9

Je l'ai corrigé en installant libmysqlclient:

sudo apt-get install libmysqlclient16-dev
thoslin
la source
9

Le MySQL-pythonpackage utilise la mysql_configcommande pour en savoir plus sur la mysqlconfiguration de votre hôte. Votre hôte n'a pas la mysql_configcommande.

Le package de bibliothèques de développement MySQL (MySQL-devel-xxx) de dev.mysql.com fournit cette commande et les bibliothèques nécessaires au package MySQL-python. Les MySQL-develpackages se trouvent dans la zone de téléchargement - serveur communautaire. Les noms des packages de la bibliothèque de développement MySQL commencent par MySQL-develet varient en fonction de la version MySQL et de la plate-forme Linux (par exemple MySQL-devel-5.5.24-1.linux2.6.x86_64.rpm.)

Notez que vous n'avez pas besoin d'installer le serveur mysql.

John Livingston
la source
8

Le paquet libmysqlclient-dev est obsolète, utilisez donc la commande ci-dessous pour le corriger.

Le paquet libmysqlclient-dev n'est pas disponible, mais est référencé par un autre paquet. Cela peut signifier que le package est manquant, obsolète ou uniquement disponible à partir d'une autre source

sudo apt-get install default-libmysqlclient-dev
Rajathithan Rajasekar
la source
6

Dans centos 7, cela fonctionne pour moi:

yum install mariadb-devel
pip install mysqlclient
Rajiv Sharma
la source
5

Sur ma machine Fedora 23, j'ai dû exécuter ce qui suit:

sudo dnf install mysql-devel
Raptor
la source
5

Pour Alpine Linux:

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

MariaDB est un remplacement direct de MySQL et est devenu le nouveau standard à partir d'Alpine 3.2. Voir https://bugs.alpinelinux.org/issues/4264

aboutaaron
la source
1
ce qui rend mon image alpine près de 500 Mo, je suis venu en alpin pour une taille d'image plus petite
ospider
Je dois également installer python3-dev pour que la lib à construire
ospider
4

Je pense que les lignes suivantes peuvent être exécutées sur le terminal

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

Ce répertoire mysql_config est destiné au serveur zend sur MacOSx. Vous pouvez le faire pour Linux comme les lignes suivantes

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

Il s'agit du répertoire Linux mysql par défaut.

hkulekci
la source
4

J'ai eu ces problèmes et résolu si en ajoutant un lien symbolique vers mysql_config.

J'avais installé mysql avec homebrew et je l'ai vu dans la sortie.

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

Selon la façon dont vous l'avez obtenu, mysqlce sera à différents endroits. Dans mon cas, une /usr/local/Cellar/mysql
fois que vous savez où il se trouve, vous devriez pouvoir créer un lien symbolique vers l'endroit où python le recherche. /usr/local/mysql

Cela a fonctionné pour moi.

ln -s /usr/local/Cellar/mysql/<< VERSION >>/bin/mysql_config   /usr/local/mysql/bin/mysql_config
Schechter
la source
4

J'ai eu le même problème. Je l'ai résolu en suivant ce tutoriel pour installer Python avec python3-dev sur 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

Et maintenant, vous pouvez configurer votre environnement virtuel:

sudo apt-get install -y python3-venv
pyvenv my_env
source my_env/bin/activate
Little Brain
la source
3

Vous devez installer le paquet python-dev:

sudo apt-get install python-dev
ebarch
la source
2

sudo apt-get install python-mysqldb

Python 2.5? On dirait que vous utilisez une très ancienne version d'Ubuntu Server (Hardy 8.04?) - veuillez confirmer quelle version Linux le serveur utilise.

recherche python-mysql sur la base de données des paquets ubuntu

Quelques informations supplémentaires:

Du README de mysql-python -

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

MySQL-python est préemballé dans Red Hat Linux 7.x et plus récent. Cela inclut Fedora Core et Red Hat Enterprise Linux. Vous pouvez également créer vos propres packages RPM comme décrit ci-dessus.

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

Emballé comme python-mysqldb_ ::

# apt-get install python-mysqldb

Ou utilisez Synaptic.

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

Ubuntu ......

Identique à Debian.

Note de bas de page: Si vous utilisez vraiment une distribution de serveur plus ancienne qu'Ubuntu 10.04, vous n'avez plus de support officiel et vous devriez mettre à niveau le plus tôt possible.

Gary
la source
Je peux confirmer pour Debian 10 sudo apt-get install python-mysqldb
Tedo Vrbanec
C'est tout ce que vous devez faire: dev.mysql.com/doc/connector-python/en/…
Abhinandan Dubey
2

Cette méthode est réservée à ceux qui savent que Mysql est installé mais que mysql_config est toujours introuvable. Cela se produit si l'installation de python ne trouve pas mysql_config dans votre chemin système, ce qui se produit principalement si vous avez effectué l'installation via .dmg Mac Package ou installé à un chemin personnalisé. Le moyen le plus simple et le plus documenté de MySqlDB est de changer le site.cfg . Trouvez le mysql_config qui se trouve probablement dans / usr / local / mysql / bin / et changez la variable à savoir mysql_config comme ci-dessous et relancez l'installation. N'oubliez pas de le commenter en supprimant "#"

Changer sous la ligne

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

à

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

en fonction du chemin d'accès dans votre système.

Au fait, j'ai utilisé l'installation de python après avoir changé le site.cfg

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

Ahsan.Amin
la source
2

Jusqu'à présent, toutes les solutions (Linux) nécessitent sudoou des droits root pour l'installation. Voici une solution si vous n'avez pas de droits root et sans sudo. (non sudo apt install ...):

  1. Téléchargez le fichier .deb de libmysqlclient-dev, par exemple depuis ce miroir
  2. Accédez au fichier téléchargé et exécutez dpkg -x libmysqlclient-dev_<version tag>.deb .Cela extraira un dossier appeléusr .
  3. Lien symbolique ./usr/bin/mysql_configvers un endroit qui se trouve sur votre $PATH:

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

  4. Il devrait maintenant pouvoir trouver mysql_config

Testé sur Ubuntu 18.04.

RunOrVeith
la source
Est-ce que cela fonctionne dans CentOS 7? En supposant que je n'ai pas d'accès root ou dpkg installé, comment dois-je l'aborder?
Sohil
Pas besoin d'être root tant que vous travaillez dans votre propre environnement virtuel
BlackBear
2

Pour macOS Mojave, une configuration supplémentaire était requise, pour que les compilateurs trouvent openssl, vous devrez peut-être définir:

export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"
Haidar Zeineddine
la source
2

Je pense que le moyen le plus pratique pour résoudre ce problème en 2020 est d'utiliser un autre package python. Nous n'avons pas besoin d'installer d'autre logiciel binaire.

Essaye ça

pip install mysql-connector-python

et alors

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
la source
1

J'ai rencontré le même problème, j'ai simplement ajouté le chemin où * mysql_config * résidait dans la variable d'environnement PATH et cela a fonctionné pour moi.

prospectus
la source
1

sudo apt-get build-dep python-mysqldb va installer toutes les dépendances pour construire le package à partir de PIP / easy_install

Thomas Grainger
la source
1

Comme l'erreur réelle est

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

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

et si vous ne pouvez pas installer les packages python-dev ou python-devel, vous pouvez télécharger l'archive avec la version requise des sources python depuis http://hg.python.org/ et placer les fichiers d'en-têtes dans le dossier approprié pour inclure

Oleg Neumyvakin
la source
1

Tapez simplement:

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

Cela résoudra ces problèmes.

Luciano D. Mota
la source
3
Si vous obtenez une erreur avec mysql_config, essayez ceci:sudo apt-get install libmysqlclient-dev
Luciano D. Mota
1

Dans CentOS 7, les opérations suivantes doivent être effectuées:

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

#step2:
sudo yum install mysql-devel
DachuanZhao
la source