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?

zjm1126
la source
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
Fbo
la source
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)

Chris Villa
la source
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.

Steve-Gregory
la source
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
user2886440
la source
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
Zaman Afzal
la source
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.

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

lancerex
la source
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.

Emil Davtyan
la source
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
Alexandru Chirila
la source
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

Essayer sudo apt-get build-dep python-mysqldb

KalamHavij
la source
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
Thomas Schwärzl
la source
6

Pour Linux

ça marche pour moi

yum install python-devel mysql-devel
penny chan
la source
5

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

sudo apt-get install libmariadbclient-dev
Dinesh Sharma
la source
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
avion
la source
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.

eMBee
la source
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
Alex
la source
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

lakshmankashyap
la source
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 :-)

Brad Herdson
la source
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.

Paul Kenjora
la source
1

si vous installez MySQL-python dans votre environnement virtuel, vous devez vérifier la version pip, si la version est antérieure à 9.0.1, veuillez la mettre à jour

pip install --upgrade pip
Albert Chen
la source
Voir stackoverflow.com/questions/7475223/… Je ne pense pas que votre réponse vous aidera
Linus
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.

Avidan Efody
la source