Mac OS X - EnvironmentError: mysql_config introuvable

121

Tout d'abord, oui, j'ai déjà vu ça:

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

Le problème

J'essaye d'utiliser Django sur un projet Google App Engine. Cependant, je n'ai pas pu démarrer car le serveur ne démarre pas correctement en raison de:

ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

J'ai fait des recherches et tout cela a montré qu'il fallait installer Mysql-python, car apparemment ce n'est pas sur mon système. J'ai en fait essayé de le désinstaller et j'ai obtenu ceci:

Cannot uninstall requirement mysql-python, not installed

Chaque fois que j'essaye d'installer via:

sudo pip install MySQL-python

J'obtiens une erreur indiquant:

raise EnvironmentError("%s not found" % (mysql_config.path,))
EnvironmentError: mysql_config not found

J'ai déjà essayé de courir:

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

mais cela n'a pas semblé aider, car j'ai exécuté à nouveau la commande d'installation et elle a toujours échoué.

Des idées?

Veuillez noter que je ne suis pas dans une virtualenv.

daniel_c05
la source
Vous pouvez toujours accéder au fichier lançant le EnvironmentErroret afficher des informations de débogage plus utiles, comme os.getcwd(). vous pouvez également ajouter un pdb.set_trace()et comprendre des choses.
ealfonso

Réponses:

340

Ok, eh bien, tout d'abord, laissez-moi vérifier si je suis sur la même longueur d'onde que vous:

  • Vous avez installé python
  • Tu l'as fait brew install mysql
  • Tu l'as fait export PATH=$PATH:/usr/local/mysql/bin
  • Et enfin, vous l'avez fait pip install MySQL-Python(ou pip3 install mysqlclientsi vous utilisez python 3)

Si vous avez effectué toutes ces étapes dans le même ordre et que vous obtenez toujours une erreur, poursuivez votre lecture jusqu'à la fin.Si, cependant, vous n'avez pas suivi ces étapes exactes, essayez de les suivre depuis le tout début.

Donc, vous avez suivi les étapes et vous obtenez toujours une erreur, eh bien, il y a quelques choses que vous pouvez essayer:

  1. Essayez de courir à which mysql_configpartir de bash. Il ne sera probablement pas trouvé. C'est pourquoi la version ne le trouve pas non plus. Essayez de courir locate mysql_configet voyez si quelque chose vous revient. Le chemin vers ce binaire doit être soit dans la variable d'environnement $ PATH de votre shell, soit il doit être explicitement dans le fichier setup.py pour le module en supposant qu'il cherche à un endroit spécifique pour ce fichier.

  2. Au lieu d'utiliser MySQL-Python, essayez d'utiliser 'mysql-connector-python', il peut être installé en utilisant pip install mysql-connector-python. Vous trouverez plus d'informations à ce sujet ici et ici .

  3. Trouvez manuellement l'emplacement de «mysql / bin», «mysql_config» et «MySQL-Python», et ajoutez tout cela à la variable d'environnement $ PATH.

  4. Si toutes les étapes ci - dessus échouent, alors vous pouvez essayer d' installer « mysql » en utilisant MacPorts, auquel cas le fichier « mysql_config » serait effectivement appelé « mysql_config5 », et dans ce cas, vous devez le faire après l' installation: export PATH=$PATH:/opt/local/lib/mysql5/bin. Vous pouvez trouver plus de détails ici .

Note 1: J'ai vu des gens dire que l'installation python-devet a libmysqlclient-devégalement aidé, mais je ne sais pas si ces packages sont disponibles sur Mac OS.

Remarque 2: Assurez-vous également d'essayer d'exécuter les commandes en tant que root.

J'ai obtenu mes réponses (en plus de mon cerveau) de ces endroits (peut-être pourriez-vous les regarder, pour voir si cela aiderait): 1 , 2 , 3 , 4 .

J'espérais avoir aidé et je serais heureux de savoir si cela fonctionnait ou non. Bonne chance.

Vadorequest
la source
2
Excellente explication, FWIW sur Linux, l'installation de python-dev et libmysqlclient-dev est généralement la seule chose à faire pour que cela fonctionne, mais sur osx, tout ce que j'avais à faire était de mettre à jour mon bain. Je crois que sur Linux, vous pouvez installer mysql sans obtenir le deps python pour mysql-python si vous n'installez pas les bibliothèques de développement indiquées. (
Iain Duncan
1
Après la mise à niveau vers Yosemite, il se plaint également de l'absence de "stdio.h". Vous pouvez résoudre ce problème en allant ici: stackoverflow.com/questions/19580758/…
Mihai Oprea
4
Courir l'a brew install mysqlcorrigé. De plus, cette commande which mysql-confign'a pas fonctionné pour moi, mais which mysql_configa fonctionné.
Chad
1
J'ai également dû ajouter cette ligne à mon .bash_profilefichier:export DYLD_LIBRARY_PATH=/usr/local/Cellar/mysql/5.7.9/lib/
JeffThompson
2
Je devais pointer vers l'installation de export PATH=$PATH:/usr/local/Cellar/mysql/5.7.20/bin
brews
6

J'avais débogué ce problème depuis toujours - 3 heures 17 minutes. Ce qui m'a particulièrement ennuyé, c'est que sql était déjà installé sur mon système grâce à un travail antérieur à l'université, mais pip / pip3 ne le reconnaissait pas. Ces fils ci-dessus et beaucoup d'autres pour lesquels j'ai parcouru Internet ont été utiles pour élucider le problème, mais n'ont pas vraiment résolu les choses.

RÉPONDRE

Pip recherche des binaires mysql dans le répertoire Homebrew qui est situé par rapport à Macintosh HD @

/usr/local/Cellar/

donc j'ai trouvé que cela nécessite que vous apportiez quelques modifications

étape 1: Téléchargez MySql si ce n'est déjà fait https://dev.mysql.com/downloads/

Étape 2: localisez-le par rapport au disque dur et au cd Macintosh

/usr/local/mysql/bin

Étape 3: Une fois là-bas, ouvrez le terminal et utilisez un éditeur de texte de votre choix - je suis moi-même un néovim, alors j'ai tapé (ne vient pas automatiquement avec Mac ... une autre histoire pour un autre jour)

nvim mysql_config

Étape 4: Vous verrez à environ la ligne 112

# Create options 
libs="-L$pkglibdir"
libs="$libs -l "

Changer pour

# Create options 
libs="-L$pkglibdir"
libs="$libs -lmysqlclient -lssl -lcrypto"

* vous remarquerez que ce fichier a un accès en lecture seule, donc si vous utilisez vim ou neovim

:w !sudo tee %

Étape 5: Dirigez-vous vers le répertoire de base et modifiez le fichier .bash_profile

cd ~

ensuite

nvim .bash_profile

et ajouter

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

dans le fichier puis enregistrez

Étape 6: par rapport à Macintosh HD, localisez les chemins et ajoutez-y

cd /private/etc/

puis

nvim paths

et ajouter

/usr/local/mysql/bin

* vous remarquerez à nouveau que ce fichier a un accès en lecture seule, donc si vous utilisez vim ou neovim

:w !sudo tee % 

puis

cd ~

puis actualisez le terminal avec vos modifications en exécutant

source .bash_profile

finalement

pip3 install mysqlclient

Et Viola. Souvenez-vous que c'est une ambiance.

Trevor James Oluotch
la source
Mon libsintérieur mysql_configétait déjà tel que décrit dans la section «Changer en». Cependant, l'ajout du PATH à a private/etcpermis d'autoriser l'installation globale de mysqlclientqui échouait auparavant.
martin-martin
5

Si vous ne voulez pas installer mysql complet, nous pouvons résoudre ce problème en installant simplement mysqlclient brew install mysqlclient Une fois que cmd est terminé, il vous demandera d'ajouter la ligne ci-dessous à ~/.bash_profile:

echo 'export PATH="/usr/local/opt/mysql-client/bin:$PATH"' >> ~/.bash_profile

Fermez le terminal et démarrez le nouveau terminal et continuez avec pip install mysqlclient

Arun
la source
3

J'utilise Python 3.6 sur MacOS Catalina. Mon problème était que j'ai essayé d'installer mysqlclient==1.4.2.post1et qu'il continue de lancer une erreur mysql_config introuvable.

Voici les étapes que j'ai suivies pour résoudre le problème.

  1. Installez mysql-connector-c en utilisant brew (si vous avez déjà mysql, installez d'abord unink brew unlink mysql) -brew install mysql-connector-c
  2. Ouvrez mysql_config et éditez le fichier autour de la ligne 112
# Create options 
libs="-L$pkglibdir"
libs="$libs -lmysqlclient -lssl -lcrypto"
  1. brew info openssl - cela vous donnera plus d'informations sur ce qui doit être fait pour mettre openssl dans PATH
  2. par rapport à l'étape 3, vous devez le faire pour mettre openssl dans PATH - echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
  3. pour que les compilateurs trouvent openssl - export LDFLAGS="-L/usr/local/opt/openssl/lib"
  4. pour que les compilateurs trouvent openssl - export CPPFLAGS="-I/usr/local/opt/openssl/include"
azmirfakkri
la source
Je vous remercie! J'ai essayé tellement de choses et votre méthode a fonctionné pour moi.
Yagimutsu
2

Cela se produit également lorsque j'installe mysqlclient,

$ pip install mysqlclient

Comme l'a dit user3429036,

$ brew install mysql
AndreL
la source
1

Cette réponse est destinée aux utilisateurs de MacOS qui n'ont pas installé depuis brewmais plutôt depuis le fonctionnaire .dmg/.pkg. Ce programme d'installation ne parvient pas à modifier votre PATH, ce qui entraîne des choses hors de la boîte:

  1. Toutes les commandes de MySQL aiment mysql, mysqladmin, mysql_config, etc. ne peut pas être trouvé, et en conséquence:
  2. le "Volet des préférences MySQL" n'apparaît pas dans les Préférences Système, et
  3. vous ne pouvez installer aucune API qui communique avec MySQL, y compris mysqlclient

Ce que vous devez faire est d'ajouter le bindossier MySQL (généralement /usr/local/mysql/bindans votre PATHen ajoutant cette ligne dans votre ~/.bash_profilefichier:

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

Vous devez ensuite recharger votre ~/.bash_profilepour que la modification prenne effet dans votre session Terminal actuelle:

source ~/.bash_profile

Avant l'installation mysqlclient, cependant, vous devez accepter la licence XcodeBuild:

sudo xcodebuild -license

Suivez leurs instructions pour déconnecter votre famille, après quoi vous devriez pouvoir installer mysqlclientsans problème:

pip install mysqlclient

Après avoir installé cela, vous devez faire une dernière chose pour corriger un bogue d'exécution fourni avec MySQL ( Dynamic Library libmysqlclient.dylibnot found ), en ajoutant cette ligne au chemin des bibliothèques dynamiques de votre système:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/:$DYLD_LIBRARY_PATH

Zhanwen Chen
la source
J'ai vu votre réponse après avoir trouvé les binaires sur le disque en exécutant sudo lsof -i :3306pour voir le PID du processus MySQL actif, puis en exécutant sudo -P <pid>dessus pour voir ses fichiers ouverts. Ceci est venu avec /usr/local/mysql-8.0.18-macos10.14-x86_64/binlequel j'ai ajouté $PATHet voila !
Neil C.Obremski
0

Si vous avez installé mysql en utilisant Homebrew en spécifiant une version, mysql_config serait présent ici. - /usr/local/Cellar/[email protected]/5.6.47/bin

vous pouvez trouver le chemin du bac sql en utilisant la commande ls dans / usr / local / répertoire

/usr/local/Cellar/mysql@5.6/5.6.47/bin

Ajoutez le chemin d'accès au profil bash comme ceci.

nano ~/.bash_profile

export PATH="/usr/local/Cellar/[email protected]/5.6.47/bin:$PATH"
mohammed_ayaz
la source
0

Le problème dans mon cas était que j'exécutais la commande dans un environnement virtuel python et qu'elle n'avait pas le chemin vers / usr / local / mysql / bin bien que je l'ai mis dans le fichier .bash_profile. Le simple fait d'exporter le chemin dans l'environnement virtuel a fonctionné pour moi.

Pour votre information, sql_config réside dans le répertoire bin.

ac_baz
la source
-1

Installer brew ou apt-get n'est pas non plus facile pour moi, j'ai donc téléchargé mysql via: https://dev.mysql.com/downloads/connector/python/ , installé. Je peux donc trouver mysql_config dans ce répertoire: / usr / local / mysql / bin

la prochaine étape est:

  1. export PATH = $ PATH: / usr / local / mysql / bin
  2. pip installer MySQL-python == 1.2.5
J.Mark
la source