Mac OS X - EnvironmentError: mysql_config non trovato


121

Prima di tutto, sì, ho già visto questo:

pip install mysql-python fallisce con EnvironmentError: mysql_config non trovato

Il problema

Sto cercando di utilizzare Django su un progetto di Google App Engine. Tuttavia, non sono stato in grado di iniziare poiché il server non si avvia correttamente a causa di:

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

Ho fatto alcune ricerche e tutto indicava la necessità di installare Mysql-python, poiché apparentemente non è sul mio sistema. In realtà ho provato a disinstallarlo e ho ottenuto questo:

Cannot uninstall requirement mysql-python, not installed

Ogni volta che provo effettivamente a installare tramite:

sudo pip install MySQL-python

Ottengo un errore che indica:

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

Ho già provato a correre:

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

ma ciò non sembrava aiutare, poiché ho eseguito nuovamente il comando di installazione e ancora non è riuscito.

Qualche idea?

Si prega di notare che non sono in un virtualenv.


Puoi sempre andare al file che solleva il EnvironmentErrore stampare informazioni di debug più utili, come os.getcwd(). puoi anche aggiungere un pdb.set_trace()e capire le cose.
ealfonso

Risposte:


340

Ok, beh, prima di tutto, fammi controllare se sono sulla tua stessa pagina:

  • Hai installato python
  • L'hai fatto brew install mysql
  • L'hai fatto export PATH=$PATH:/usr/local/mysql/bin
  • E infine, l'hai fatto pip install MySQL-Python(o pip3 install mysqlclientse stai usando python 3)

Se hai eseguito tutti questi passaggi nello stesso ordine e hai ancora un errore, continua a leggere fino alla fine, se, tuttavia, non hai seguito esattamente questi passaggi, prova a seguirli dall'inizio.

Quindi, hai seguito i passaggi e ricevi ancora un errore, beh, ci sono alcune cose che potresti provare:

  1. Prova a scappare which mysql_configda bash. Probabilmente non verrà trovato. Ecco perché neanche la build lo trova. Prova a correre locate mysql_confige vedi se torna qualcosa. Il percorso di questo binario deve essere nella variabile d'ambiente $ PATH della tua shell, o deve essere esplicitamente nel file setup.py per il modulo supponendo che stia cercando in un posto specifico per quel file.

  2. Invece di usare MySQL-Python, prova a usare 'mysql-connector-python', può essere installato usando pip install mysql-connector-python. Maggiori informazioni su questo possono essere trovate qui e qui .

  3. Trova manualmente la posizione di "mysql / bin", "mysql_config" e "MySQL-Python" e aggiungili alla variabile di ambiente $ PATH.

  4. Se tutti i passaggi precedenti non riescono, allora si potrebbe provare a installare 'mysql' utilizzando MacPorts, nel qual caso il file 'mysql_config' sarebbe in realtà essere chiamato 'mysql_config5', e in questo caso, si dovrebbe fare questo dopo l'installazione: export PATH=$PATH:/opt/local/lib/mysql5/bin. Puoi trovare maggiori dettagli qui .

Nota 1: ho visto alcune persone dire che l'installazione python-deve libmysqlclient-devanche aiutato, tuttavia non so se questi pacchetti sono disponibili su Mac OS.

Nota 2: Inoltre, assicurati di provare a eseguire i comandi come root.

Ho ricevuto le mie risposte da (oltre al mio cervello) questi luoghi (forse potresti dare un'occhiata a loro, per vedere se potrebbe aiutare): 1 , 2 , 3 , 4 .

Speravo di aver aiutato e sarei felice di sapere se tutto questo ha funzionato o meno. In bocca al lupo.


2
Ottima spiegazione, FWIW su Linux, l'installazione di python-dev e libmysqlclient-dev è di solito l'unica cosa che deve fare per farlo funzionare, ma su OSX tutto quello che dovevo fare era aggiornare il mio bagno. Credo che su Linux sia possibile installare mysql senza ottenere i deps python per mysql-python se non si installano le librerie dev indicate. (Ho commesso quell'errore così tante volte, lol)
Iain Duncan

1
Dopo l'aggiornamento a Yosemite, ora si lamenta anche della mancanza di "stdio.h". Puoi risolverlo andando qui: stackoverflow.com/questions/19580758/…
Mihai Oprea

4
L'esecuzione lo ha brew install mysqlrisolto. Inoltre, questo comando which mysql-confignon ha funzionato per me, ma which mysql_configha funzionato.
Ciad

1
Ho anche dovuto aggiungere questa riga al mio .bash_profilefile:export DYLD_LIBRARY_PATH=/usr/local/Cellar/mysql/5.7.9/lib/
JeffThompson

2
Ho dovuto indicare l'installazione delle birreexport PATH=$PATH:/usr/local/Cellar/mysql/5.7.20/bin
Climbs_lika_Spyder

6

Ho eseguito il debug di questo problema da sempre - 3 ore 17 minuti. Ciò che mi ha particolarmente infastidito è che avevo già installato sql sul mio sistema tramite un precedente lavoro di uni, ma pip / pip3 non lo riconosceva. Questi thread sopra e molti altri che ho setacciato su Internet sono stati utili per chiarire il problema ma in realtà non hanno risolto le cose.

RISPOSTA

Pip sta cercando i binari di mysql nella directory Homebrew che si trova rispetto a Macintosh HD @

/usr/local/Cellar/

quindi ho scoperto che ciò richiede di apportare alcune modifiche

passaggio 1: Scarica MySql se non lo hai già fatto https://dev.mysql.com/downloads/

Passaggio 2: individualo rispetto a Macintosh HD e cd

/usr/local/mysql/bin

Passaggio 3: una volta lì, apri il terminale e usa un editor di testo a tua scelta: io stesso sono un neovim quindi ho digitato (non viene automaticamente con Mac ... un'altra storia per un altro giorno)

nvim mysql_config

Passaggio 4: vedrai approssimativamente la linea 112

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

Cambia in

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

* noterai che questo file ha accesso in sola lettura quindi se stai usando vim o neovim

:w !sudo tee %

Passaggio 5: vai alla directory home e modifica il file .bash_profile

cd ~

Poi

nvim .bash_profile

e aggiungi

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

nel file quindi salvare

Passaggio 6: relativo a Macintosh HD, individuare i percorsi e aggiungerli

cd /private/etc/

poi

nvim paths

e aggiungi

/usr/local/mysql/bin

* Noterai di nuovo che questo file ha accesso in sola lettura, quindi se stai usando vim o neovim

:w !sudo tee % 

poi

cd ~

quindi aggiorna il terminale con le tue modifiche eseguendo

source .bash_profile

Finalmente

pip3 install mysqlclient

E Viola. Ricorda che è un'atmosfera.


Il mio libsinterno mysql_configera già come descritto nella sezione "Cambia in". Tuttavia, l'aggiunta del PERCORSO a ha private/etcaiutato a consentire l'installazione globale di mysqlclientquello che prima non riusciva.
martin-martin

5

Se non si desidera installare mysql completo, possiamo risolverlo semplicemente installando mysqlclient brew install mysqlclient Una volta completato cmd, verrà chiesto di aggiungere la riga sottostante a ~/.bash_profile:

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

Chiudi il terminale e avvia un nuovo terminale e procedi con pip install mysqlclient


3

Sto eseguendo Python 3.6 su MacOS Catalina. Il mio problema era che ho provato a installare mysqlclient==1.4.2.post1e continua a generare l'errore mysql_config non trovato.

Questa è la procedura che ho seguito per risolvere il problema.

  1. Installa mysql-connector-c usando brew (se hai già mysql installa prima unlink brew unlink mysql) -brew install mysql-connector-c
  2. Apri mysql_config e modifica il file attorno alla riga 112
# Create options 
libs="-L$pkglibdir"
libs="$libs -lmysqlclient -lssl -lcrypto"
  1. brew info openssl - questo ti darà maggiori informazioni su cosa è necessario fare per mettere openssl in PATH
  2. in relazione al passaggio 3, è necessario farlo per mettere openssl in PATH - echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
  3. per i compilatori per trovare openssl - export LDFLAGS="-L/usr/local/opt/openssl/lib"
  4. per i compilatori per trovare openssl - export CPPFLAGS="-I/usr/local/opt/openssl/include"

Grazie! Ho provato tante cose e il tuo metodo ha funzionato per me.
Yagimutsu

2

Anche questo accade quando stavo installando mysqlclient,

$ pip install mysqlclient

Come ha detto user3429036,

$ brew install mysql

1

Questa risposta è per gli utenti di MacOS che non hanno installato da brewma piuttosto dall'ufficiale .dmg/.pkg. Quel programma di installazione non riesce a modificare il tuo PATH, causando problemi fuori dalla scatola:

  1. Tutti i comandi di MySQL piace mysql, mysqladmin, mysql_config, ecc non può essere trovato, e come risultato:
  2. il "pannello delle preferenze di MySQL" non viene visualizzato nelle preferenze di sistema e
  3. non è possibile installare alcuna API che comunichi con MySQL, inclusi mysqlclient

Quello che devi fare è aggiungere la bincartella MySQL (in genere /usr/local/mysql/binnel tuo PATHaggiungendo questa riga nel tuo ~/.bash_profilefile:

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

Dovresti quindi ricaricare il tuo ~/.bash_profileaffinché la modifica abbia effetto nella tua attuale sessione di Terminale:

source ~/.bash_profile

Prima dell'installazione mysqlclient, tuttavia, è necessario accettare la licenza XcodeBuild:

sudo xcodebuild -license

Segui le loro indicazioni per disconnettere la tua famiglia, dopodiché dovresti essere in grado di installare mysqlclientsenza problemi:

pip install mysqlclient

Dopo averlo installato, devi fare ancora una cosa per correggere un bug di runtime fornito con MySQL ( libreria dinamica libmysqlclient.dylibnon trovata ), aggiungendo questa riga al percorso delle librerie dinamiche del tuo sistema:

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


Ho visto la tua risposta dopo aver trovato i file binari su disco eseguendo sudo lsof -i :3306per vedere il PID del processo MySQL attivo e poi eseguendolo sudo -P <pid>per vedere i suoi file aperti. Questo è venuto fuori con /usr/local/mysql-8.0.18-macos10.14-x86_64/bincui ho aggiunto $PATHe voilà !
Neil C.Obremski

0

Se hai installato mysql usando Homebrew specificando una versione, mysql_config sarebbe presente qui. - /usr/local/Cellar/mysql@5.6/5.6.47/bin

si può trovare il percorso del bidone SQL utilizzando il comando ls in / / usr / local directory

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

Aggiungi il percorso al profilo bash in questo modo.

nano ~/.bash_profile

export PATH="/usr/local/Cellar/mysql@5.6/5.6.47/bin:$PATH"

0

Il problema nel mio caso era che stavo eseguendo il comando all'interno di un ambiente virtuale python e non aveva il percorso per / usr / local / mysql / bin anche se l'ho inserito nel file .bash_profile. La semplice esportazione del percorso nell'ambiente virtuale ha funzionato per me.

Per tua informazione sql_config risiede nella directory bin.


-1

Anche installare brew o apt-get non è facile per me, quindi ho scaricato mysql tramite: https://dev.mysql.com/downloads/connector/python/ , l'ho installato. Quindi posso trovare mysql_config in questa directory: / usr / local / mysql / bin

il passaggio successivo è:

  1. export PATH = $ PATH: / usr / local / mysql / bin
  2. pip installa MySQL-python == 1.2.5
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.