web-dev-qa-db-fra.com

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

J'essaie de faire exécuter un script Python 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 lorsque j'essaie d'installer mySQLdb via setuptools, 

python setup.py install

Je reçois le rapport d'erreur suivant lié à la commande mysql_config.

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 at-il rencontré cette erreur et si oui, comment l'avez-vous résolu/que puis-je faire pour installer correctement mysqldb? 

369
user904542

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', vous devez donc d'abord l'installer.

Pouvez-vous confirmer que vous avez ou n'a pas installé 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 sous 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é depuis (encore une fois, en supposant que debian/ubuntu):

Sudo apt-get install libmysqlclient-dev

si vous utilisez mariadb, la solution de remplacement pour mysql, lancez

Sudo apt-get install libmariadbclient-dev
534
amarillion

J'installais python-mysql sur 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

Puis j'ai essayé avec

apt-get install python-dev

Et puis j'étais heureux :)

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

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

apt-get install libmysqlclient-dev python-dev

Bien que cela ait fonctionné, j'ai quand même décidé de faire ce qui suit:

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

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

27
Elliott

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

Voici comment je l'ai corrigé.

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

Le problème était que l'installateur ne pouvait pas 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.

23
Mayank R Jain

J'ai résolu ce problème en procédant comme suit:

Sudo apt-get install libmysqlclient-dev
Sudo apt-get install python-dev
Sudo python setup.py install
17
zhaozhi

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

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

16
samwize

Je l'ai corrigé en installant libmysqlclient:

Sudo apt-get install libmysqlclient16-dev
8
thoslin

Le package MySQL-python utilise la commande mysql_config pour en savoir plus sur la configuration mysql sur votre hôte. Votre hôte n'a pas la commande mysql_config.

Le paquet de bibliothèques de développement MySQL (MySQL-devel-xxx) de dev.mysql.com fournit cette commande et les bibliothèques nécessaires au paquet MySQL-python. Les packages MySQL-devel se trouvent dans la zone de téléchargement du serveur de communauté. Les noms de paquet de la bibliothèque de développement MySQL commencent par MySQL-devel et varient en fonction de la version de 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 mysql server.

7
John Livingston

(Spécifique à mac) J'ai essayé beaucoup de choses, mais ces commandes ont finalement fonctionné pour moi. 

  1. brew install mysql # installer mysql
  2. brew unlink mysql 
  3. brew install mysql-connector-c
  4. export PATH=/usr/local/Cellar/mysql/8.0.11/bin:$PATH # chemin de mise à jour et définissez le dossier mysql bin sur chemin
  5. Sudo ln -s /usr/local/Cellar/mysql/8.0.11/lib/libmysqlclient.21.dylib /usr/local/Cellar/lib/libmysqlclient.21.dylib # créer un lien symbolique 
  6. pip install mysqlclient # installe enfin mysql-client
7
Pulkit Pahwa

Pour Alpine Linux:

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

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

5
aboutaaron

Sur ma machine Fedora 23, je devais exécuter les tâches suivantes:

Sudo dnf install mysql-devel
5
Raptor

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

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

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

En fonction de la manière dont vous avez obtenu mysql, ce sera dans des endroits différents. Dans mon cas /usr/local/Cellar/mysql
Une fois que vous savez où il se trouve, vous devriez être en mesure de créer un lien symbolique vers l’endroit où python le cherche. /usr/local/mysql 

Cela a fonctionné pour moi. 

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

Je pense que les lignes suivantes peuvent être exécutées sur un 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/

C'est le répertoire par défaut de Linux MySQL. 

4
hkulekci

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] d'abord, pour voir quels liens symboliques sont écrasés
  4. brew link --overwrite --force [email protected] pour écraser les liens symboliques liés à mysql avec [email protected]
  5. pip install mysqlclient
3
rilut

Vous devez installer le paquet python-dev:

Sudo apt-get install python-dev
3
ebarch

Sudo apt-get install python-mysqldb

Python 2.5? On dirait que vous utilisez une très ancienne version de Ubuntu Server (Hardy 8.04?) - veuillez confirmer quelle version de Linux est utilisée par le serveur.

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

Quelques informations supplémentaires: 

Depuis le README de mysql-python - 

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

MySQL-python est pré-packagé dans Red Hat Linux 7.x et versions ultérieures. Ceci Inclut Fedora Core et Red Hat Enterprise Linux. Vous pouvez également construire vos propres packages RPM comme décrit ci-dessus.

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

Emballé en tant que 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 réellement une distribution de serveur antérieure à Ubuntu 10.04, vous ne bénéficiez plus d'un support officiel et devez effectuer la mise à niveau le plus tôt possible.

2
Gary

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
2
Little Brain

En centos 7 cela fonctionne pour moi:

yum install mariadb-devel
pip install mysqlclient
2
Rajiv Sharma

Cette méthode est réservée à ceux qui savent que Mysql est installé mais que mysql_config ne peut toujours pas être trouvé. Cela se produit si l’installation python ne trouve pas mysql_config dans votre chemin système, ce qui arrive surtout si vous avez effectué l’installation via .dmg Mac Package ou si vous avez installé un chemin personnalisé. La méthode la plus simple et la plus documentée par MySqlDB consiste à modifier le fichier site.cfg . Trouvez le fichier mysql_config qui se trouve probablement dans/usr/local/mysql/bin/et modifiez la variable, à savoir mysql_config comme ci-dessous, puis relancez l'installation. N'oubliez pas de le commenter en supprimant "#"

Changer en dessous de la ligne

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

à

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

en fonction du chemin dans votre système. 

En passant, j’ai utilisé l’installation en python après avoir changé le fichier site.cfg

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

2
Ahsan.Amin

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 à partir de http://hg.python.org/ et placer les fichiers d’en-têtes dans le dossier approprié à inclure.

1
Oleg Neumyvakin

Sudo apt-get build-dep python-mysqldb installera toutes les dépendances pour construire le paquet à partir de PIP/easy_install

1
Thomas Grainger

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

1
flyer

Jusqu'à présent, toutes les solutions (Linux) nécessitent l'installation de Sudo ou des droits root. La solution ci-dessous est la solution si vous ne disposez pas des droits root et sans Sudo. (no Sudo apt install ...):

  1. Téléchargez le fichier .deb de libmysqlclient-dev, par exemple. de ce miroir
  2. Naviguez jusqu'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_config vers un endroit qui se trouve sur votre $PATH:

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

  4. Il devrait maintenant être capable de trouver mysql_config

Testé sur Ubuntu 18.04.

1
RunOrVeith

Il suffit de taper:

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

Cela résoudra ces problèmes.

1
Luciano D. Mota

Dans CentOS 7, il convient de procéder comme suit:

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

#step2:
Sudo yum install mysql-devel
0
DachuanZhao

Pour macOS Mojave, une configuration supplémentaire était requise. Les compilateurs devaient trouver openssl vous devrez peut-être définir:

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