pip install mysql-python échoue avec EnvironmentError: mysql_config introuvable


824

C'est l'erreur que j'obtiens

(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

Que puis-je faire pour résoudre ce problème?


1
Voir ce fil: [mysql_config introuvable lors de l'installation de l'interface python mysqldb] [1] a fonctionné pour moi :) [1]: stackoverflow.com/questions/7475223/…
Staccato

Je suis un utilisateur de MAC OS Je résous ce problème avec cette question stackoverflow.com/questions/50940302/…
PatricioS

Réponses:


1399

Il semble que mysql_config soit manquant sur votre système ou que le programme d'installation ne l'a pas trouvé. Assurez-vous que mysql_config est vraiment installé.

Par exemple sur Debian / Ubuntu, vous devez installer le paquet:

sudo apt-get install libmysqlclient-dev

Peut-être que mysql_config n'est pas sur votre chemin, ce sera le cas lorsque vous compilerez vous-même la suite mysql.

Mise à jour: pour les versions récentes de debian / ubuntu (à partir de 2018), il est

sudo apt install default-libmysqlclient-dev

24
Cela a quand même créé une erreur pour moi. J'ai utilisé à la apt-get install python-mysqldbplace.
Jonatan Littke

51
mon expérience 2c: sudo apt-get install libmysqlclient-devtravaillé pour moi, sudo apt-get install python-mysqldbn'a pas aidé
Anentropic

20
@JonatanLittke L'installation d'un type global python-mysqldb va à l'encontre du point de virtualenv IMO.
fncomp

42
pour Mariadb, a sudo apt-get install libmariadbclient-devfait l'affaire.
yuvilio

11
Si ces solutions ne fonctionnent pas pour vous, vous devrez peut-être encore installer python-dev:apt-get install python-dev
Anoyz

295

Sous Mac OS, j'ai simplement exécuté ceci dans le terminal pour corriger:

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

C'est le correctif le plus rapide que j'ai trouvé - il l'ajoute au chemin, mais je pense que vous feriez mieux de l'ajouter de façon permanente (c'est-à-dire de l'ajouter /etc/paths) si vous prévoyez d'installer MySQL-python dans un autre environnement.

(testé dans OSX Mountain Lion)


6
Si vous utilisez la pile MAMP de bitnami, utilisez export PATH=$PATH:/Applications/mampstack-5.3.17-0/mysql/binsi vous utilisez cette pile MAMP commerciale , d'autre part, désinstallez-la et récupérez la bitnami car elle est de la merde et n'inclut pas les en-têtes mysql.
Timmmm

3
Pour rendre le chemin permanent, ajoutez-le au bas de /etc/paths- vous devrez ouvrir une nouvelle fenêtre de terminal pour accéder au nouveau chemin.
rojoca

@Timmmm Solution assez chère car toutes mes bases de données sont en version officielle: / existe-t-il un autre moyen de résoudre ce problème?
Volatil3

1
Très utile. Si vous utilisez XAMPP, utilisez-le commeexport PATH=$PATH:/Applications/XAMPP/xamppfiles/bin
Kevin London

10
Cela fonctionne enfin merci! également s'il mysqln'est pas installé, utilisez brew install mysqll'emplacement de l'emplacement /usr/local/bin/mysql(ou /usr/local/Cellar/mysql/VERSION/bin/s'il n'est pas lié par un lien symbolique).
Aziz Alto

102
apt-get install libmysqlclient-dev python-dev

Semblait faire l'affaire.


2
oui, pour moi seul libmysqlclient-dev ne suffisait pas, python-dev manquait aussi.
Anderson Santos

Sur Ubuntu 12.04 (précis) (32 bits) après la mise à niveau sur place à partir de 10.04 (lucide), cela n'a résolu ces erreurs. Surtout le "python-dev" supplémentaire!
Ice

Cela a également fonctionné pour moi - python-dev était la dernière pièce du puzzle. Python-mysqldb était déjà installé, donc ce n'est certainement pas tout ce qui est nécessaire.
Tim S.

Mise à jour: pour Python3, vous devez installer python3-dev.
cezar

J'avais besoin de faire cela et également d'installer gccpour obtenir une installation réussie. Aussi, il est sans doute préférable de ne pas faire python-dev, mais préciser la version particulière telle que python2.7-dev, python3.6-dev, etc.
Tim Tisdall

89

Il existe peut-être diverses réponses au problème ci-dessus, voici une solution agrégée.

Pour Ubuntu:

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

Pour CentOS:

$ yum install python-devel mysql-devel

Merci pour le conseil des centos. J'ai chassé ça toute la matinée.
Pete Magsig

Peut-être la peine d'être ajoutée python3-dev/python3-devel
Gergely M

36

Si vous êtes sur MAC, installez-le globalement

brew install mysql

puis exporter le chemin comme celui-ci

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

Que globalement ou dans votre venv tout ce que vous aimez

pip install MySQL-Python

Remarque: globalement pour python3 car Mac peut avoir à la fois python2 et 3

pip3 install MySQL-Python

34

Vous pouvez utiliser le connecteur MySQL / Python

Installation via PyPip

pip install mysql-connector-python

De plus amples informations peuvent être trouvées sur le blog d' annonce bêta de MySQL Connector / Python 1.0.5 .

Sur Launchpad, il y a un bon exemple de comment ajouter, éditer ou supprimer des données avec la bibliothèque.


3
C'est la seule chose qui a fonctionné pour moi quand j'ai abandonné mysqldb et le mess mysql_config manquant. Fonctionne bien pour mes besoins.
wh1tney

@wjoba pouvez-vous expliquer davantage? J'installe py-mysql2pgsqlet trouve une erreur de chose mysql_config. J'utilise MAMP. Que fait le connecteur mysqk?
Volatil3

1
@ Volatil3 mysql-connector-python a bien fonctionné en remplacement de mysql-python pour moi. L'installation de l'ancien via pip a fonctionné sans problème et s'est débarrassée de l'erreur mysql_config parce que (selon les propres mots du développeur) le connecteur mysql est "pur Python et n'a besoin d'aucun autre logiciel MySQL, donc pas de bibliothèques C et de compilation." J'espère que cela pourra aider. Essayez l'installation mentionnée dans cette solution et voyez si vous rencontrez toujours l'erreur.
wh1tney

Sur Ubuntu 14/4, j'obtiens: Impossible de trouver des téléchargements qui répondent à l'exigence mysql-connector-python
Timo

Cette commande a fonctionné pour moi après avoir essayé tout le reste.
Horloges

27

Pour les utilisateurs centos :

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

puis

pip install MySQL-python


Si cette solution ne fonctionne pas et affichez l'erreur de compilation gcc comme:
_mysql.c:29:20: error: Python.h: No such file or directory

Vous devez spécifier le chemin d'accès Python.h, comme ceci:
pip install --global-option=build_ext --global-option="-I/usr/include/python2.6" MySQL-python


1
Cela semble comme si vous n'aviez pas les bons fichiers d'inclusion pour le binaire Python pour lequel l' pipinstallation. Python lui-même fournit normalement l'emplacement d'inclusion; spécifiant manuellement le chemin le plus probable pointe vers la mauvaise version .
Martijn Pieters

J'ai dû faire un en sudo pip install MySQL-pythonraison d'une erreur: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

J'essayais d'installer mysql-pythonsur une instance Linux Amazon EC2 et j'ai dû installer ces derniers:

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

Mais j'ai eu cette erreur:

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

J'ai donc installé:

yum install python-devel

Et cela a fait l'affaire.


1
J'ai utilisé: en sudo yum install mysql mysql-devel mysql-common mysql-libs gcc dehors de mon virtualenv. Ensuite, je suis revenu dans mon environnement virtuel et j'ai couru pip install mysql-pythonet cela a fonctionné.
tandy

1
dnf install mysql-devel gcca été assez pour moi, cela dépend du reste
Jens Timmerman

python-develdonnera maintenant une erreur, si vous utilisez python 2.7, essayez cecipython27-devel
Sizzling Code

8

Pour toute personne qui utilise MariaDB au lieu de MySQL, la solution consiste à installer le libmariadbclient-devpackage et à créer un lien symbolique vers le fichier de configuration avec le nom correct.

Par exemple, cela a fonctionné pour moi:

ln -s /usr/bin/mariadb_config /usr/bin/mysql_config

2
Il s'agit d'une réponse sous-estimée utile dans tous les cas où l'on veut se connecter à un socket de base de données spécifique et connu. Cela m'a aidé à me connecter à une base de données mysql autonome. La plupart des solutions recommandent simplement de réinstaller (ou d'installer un deuxième ou un troisième ... etc) client msql!
7yl4r


6

OS X Mavericks

En raison de changements dans les outils de développement osx mavericks et xcode, vous pouvez obtenir l'erreur lors de l'installation

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

utilisez donc:

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

6

Pour Linux

ça marche pour moi

yum install python-devel mysql-devel

5

pour mariadb, installez lib mariadb client-dev au lieu de libmysqlclient-dev

sudo apt-get install libmariadbclient-dev

Tout ce dont j'ai besoin pour utiliser Debian 9 Stretch avec MariaDB
anhtran

4

Vous devez installer le mysqlpremier:

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

Ensuite, vous pouvez installer mysqlclient:

pip install  mysqlclient

2

Parfois, l'erreur dépend de la cause réelle. nous avons eu un cas où mysql-python a été installé via le paquet debian python-mysqldb.

un développeur qui ne le savait pas, s'est accidentellement exécuté pip uninstall mysql-pythonet n'a pas réussi à récupérer en pip install mysql-pythondonnant l'erreur ci-dessus.

pip uninstall mysql-pythonavait détruit le contenu du paquet debian, et avait bien sûr pip install mysql-pythonéchoué parce que le paquet debian n'avait besoin d'aucun fichier dev.

la bonne solution dans ce cas était de apt-get install --reinstall python-mysqldbrestaurer mysql-python à son état d'origine.


2

J'ai eu le même problème dans le Terraform: conteneur léger. Il est basé sur Alpine.

Là, vous devez installer mariadb-dev avec:

apk add mariadb-dev

Mais celle-là ne suffit pas car toutes les autres dépendances sont également manquées:

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

2

Séquence à suivre.

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 

Essayez ensuite de réinstaller MYSQL-python. Cela a fonctionné pour moi


1

J'ai rencontré un problème similaire lors de l'installation sur OS X Server 10.6.8. Voici ce que je devais faire. En utilisant:

MySQL-python 1.2.4b4 (source) MySQL-5.6.19 (programme d'installation binaire) Python 2.7 (programme d'installation binaire) REMARQUE: Installation dans virtualenv ...

Décompressez la source, ouvrez «distribuer_setup.py» et éditez DEFAULT_VERSION pour utiliser la dernière version des outils de distribution, comme ceci:

DEFAULT_VERSION = "0.6.49"

Sauver. Ouvrez le fichier 'site.cfg' et décommentez le chemin vers mysql_config pour qu'il ressemble à quelque chose (référencez votre propre chemin vers 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

Désormais, clean, build et make n'échoueront pas avec l'erreur 'mysql_config' non trouvée. J'espère que cela aide quelqu'un d'autre à essayer d'utiliser ses anciens xserves :-)


1

Votre chemin sudo ne connaît pas votre chemin local ... passez en mode superutilisateur, ajoutez le chemin et installez-le à partir de là.

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

Et vous êtes opérationnel sur OSX. Vous avez maintenant un python global mis à jour.



0

sur MacOS Mojave, mysql_config se trouve dans / usr / local / bin / plutôt que / usr / local / mysql / bin comme indiqué ci-dessus, donc pas besoin d'ajouter quoi que ce soit au chemin.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.