mysql_config non trovato durante l'installazione dell'interfaccia mysqldb python


478

Sto cercando di far funzionare uno script Python sul server Linux a cui sono connesso tramite ssh. Lo script utilizza mysqldb. Ho tutti gli altri componenti di cui ho bisogno, ma quando provo ad installare mySQLdb tramite setuptools in questo modo :,

python setup.py install

Ottengo il seguente rapporto di errore relativo al mysql_configcomando.

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

Qualcun altro ha riscontrato questo errore e, in tal caso, come è stato risolto / cosa posso fare per installare correttamente mysqldb?


1
Ciao @ user904542 - Ho modificato la tua domanda per renderla un po 'più concisa e darti alcune risposte :) Se non ti piace o vuoi fornire ulteriori dettagli, c'è un link di modifica direttamente sotto la tua domanda che tu puoi utilizzare per ripristinare il tuo originale o aggiungere le modifiche che ho apportato.

3
Ho riscontrato lo stesso identico problema, perché ho installato mysql dalla fonte. se lo fai anche tu, esegui qualcosa del genere per rendere disponibile mysql_config: sudo ln -s / usr / local / mysql / bin / mysql_config / usr / bin / mysql_config o aggiungi / usr / local / mysql / bin / sul tuo percorso.
Thi Duong Nguyen,

Se hai già installato mysql, il commento sopra di Thi Duong Nguyen risolve il problema creando un link simbolico al file mysql_config nella directory / usr / bin, che si trova nel percorso in cui Python cercherà.
Alex Boschmans,

2
fai questo ------------- apt-get install python-mysqldb
shadow0359

Il collegamento simbolico di @AlexBoschmans /usr/binè sbagliato, si usr/local/my...vede la risposta di Thi.
Timo

Risposte:


701

mySQLdb è un'interfaccia python per mysql, ma non è mysql stesso. E apparentemente mySQLdb ha bisogno del comando 'mysql_config', quindi devi prima installarlo.

Puoi confermare di aver installato o meno mysql stesso, eseguendo "mysql" dalla shell? Questo dovrebbe darti una risposta diversa da "mysql: comando non trovato".

Quale distribuzione di Linux stai usando? Mysql è pre-confezionato per la maggior parte delle distribuzioni di Linux. Ad esempio, per debian / ubuntu, installare mysql è facile come

sudo apt-get install mysql-server

mysql-config è in un pacchetto diverso, che può essere installato da (di nuovo, assumendo debian / ubuntu):

sudo apt-get install libmysqlclient-dev

se stai usando mariadb, il drop in sostituzione di mysql, quindi esegui

sudo apt-get install libmariadbclient-dev

Riferimento: https://github.com/JudgeGirl/Judge-sender/issues/4#issuecomment-186542797


1
Lettura degli elenchi dei pacchetti ... Fine Creazione dell'albero delle dipendenze Lettura delle informazioni sullo stato ... Fine Nota, selezionando libmysqlclient15-dev anziché libmysqlclient-dev Non è stato possibile installare alcuni pacchetti. Ciò può significare che hai richiesto una situazione impossibile o se stai utilizzando la distribuzione instabile che alcuni pacchetti richiesti non sono stati ancora creati o spostati da Incoming. Le seguenti informazioni possono aiutare a risolvere la situazione: I seguenti pacchetti hanno dipendenze non soddisfatte: libmysqlclient15-dev: Dipende da zlib1g-dev ma non verrà installato E: Pacchetti rotti
user904542

2
'Sudo apt-get install mysql' dovrebbe essere 'sudo apt-get install mysql-server'?
Kohanz,

4
Nota che per Debian è sudo apt-get install mysql-serveresudo apt-get install mysql-client
Marc Juchli,

2
Possiamo finalmente ammettere che 'pip' è un fallimento colossale? Errori come questo sono un tale dolore e sembrano accadere con la maggior parte dei pacchetti. Python ha davvero bisogno di una nuova soluzione per la gestione dei pacchetti.
Eddie Sullivan,

3
Per me su Debian è stato libmysqlclient-dev. In effetti ho installato entrambi libmariadbclient-dev libmysqlclient-dev
mirek

188

Stavo installando python-mysqlsu Ubuntu 12.04 usando

pip install mysql-python

Innanzitutto ho avuto lo stesso problema:

Not Found "mysql_config"

Questo ha funzionato per me

$ sudo apt-get install libmysqlclient-dev

Quindi ho avuto questo problema:

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

Poi ho provato con

apt-get install python-dev

E poi sono stato felice :)

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

1
Funziona anche su openSUSE, dove "libmysqlclient-dev" diventa "libmysqlclient-devel". Ora il pacchetto pip si installa bene. Grazie.
pbarill

Grazie! Funziona anche su Ubuntu 14.04.1 LTS
Krasimir

l'installazione di header python dev ha risolto l'errore Python.h mancante. Grazie.
Natus Drew

3
se usi python3.x, prova con apt-get install python3-dev.
Legolas Bloom,

Questo non ha funzionato per me il 14.04 - "E: Il pacchetto 'python-dev' non ha un candidato all'installazione"
Rene Wooller,

46

(Specifico per Mac OS X)

Ho provato molte cose, ma questi comandi alla fine hanno funzionato per me.

  1. Installare mysql
    brew install mysql
  2. brew unlink mysql
  3. brew install mysql-connector-c
  4. Aggiungi la cartella bin mysql a PATH
    export PATH=/usr/local/Cellar/mysql/8.0.11/bin:$PATH
  5. mkdir /usr/local/Cellar/lib/
  6. Crea un collegamento simbolico
    sudo ln -s /usr/local/Cellar/mysql/8.0.11/lib/libmysqlclient.21.dylib /usr/local/Cellar/lib/libmysqlclient.21.dylib
  7. brew reinstall openssl( fonte )
  8. Infine, installa mysql-client
    LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/ pip install mysqlclient

Aggiornamento: nel caso in cui non funzioni, @vinyll suggerisce di eseguire brew link mysqlprima del passaggio 8.


2
semplicemente applicando il passaggio 1-4, ha funzionato. Grazie!
Kujiy,

Per il passaggio 4, utilizzare brew info mysqlper ottenere il percorso effettivo / corretto all'installazione di mysql. Quindi, per rendere PATHpersistente la modifica, esegui il export PATH..tuo ~ / .bash_profile.
Gino Mempin il

passaggio 1-4 con brew link --overwrite mysql-connector-clavori sul mio Mac
Fame

Infine, funziona sulla mia Catalina. Utilizzare specificare open ssl è molto importante.
Happier

4
Ho dovuto fare un brew link mysqlpassaggio 8 prima di farlo funzionare.
Vinyll

37

Su Red Hat ho dovuto fare

sudo yum install mysql-devel gcc gcc-devel python-devel
sudo easy_install mysql-python

Quindi ha funzionato.


3
Ha funzionato per me su CentOS 7:yum install MySQL-python
hudolejev,

2
Se è necessario installare MySQL-pythoncome un pacchetto di Python, o utilizza virtualenv, questo aiuto potrebbe: yum install mysql-devel; venv/bin/pip install MySQL-python.
hudolejev,

2
Se usi MariaDB su CentOS 7, esegui sudo yum install mariadb-develprima, quindi puoi installare mysqlclient dipip install mysqlclient
Belter il

da dove hai preso gcc-devel rpm?
Fayaz,

yum install mysql-develCentos 8
Diego Andrés Díaz Espinoza,

33

Di seguito ha funzionato per me su Ubuntu 12.04 LTS:

apt-get install libmysqlclient-dev python-dev

Anche se ha funzionato, sono comunque andato avanti per fare quanto segue:

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

27

Ho avuto lo stesso errore durante il tentativo di installazione mysql-python.

Ecco come l'ho risolto.

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

Il problema era che il programma di installazione non riusciva a trovare mysql_config nel percorso predefinito. Ora può .. e ha funzionato ..

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

Spero che sia di aiuto.

Grazie.


Stavo riscontrando lo stesso problema installando MySQL localmente su un Mac con OSX 10.9.4 (Mavericks). Questa soluzione ha funzionato anche per me.
Approfondisci il

20

Ho risolto questo problema con i seguenti passaggi:

sudo apt-get install libmysqlclient-dev
sudo apt-get install python-dev
sudo python setup.py install

1
Quando si esegue> = Debian Stretch assicurarsi di installare default-libmysqlclient-dev, poiché il libmysqlclient-devpacchetto normale non ha candidati all'installazione.
Bono,

19

I comandi (anche mysql) mPATH potrebbero mancare.

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


11

Step1: - Installa entrambi Python3 e Python3-dev

sudo apt-get install python3 python3-dev

Step2: - Installa Python e Mysql Connector

sudo apt-get install libmysqlclient-dev

step3: - Installa il client mysql di Python

sudo apt-get install mysqlclient

Questo risolverà il tuo problema


Il passaggio 2 ha risolto questo problema per me.
Saltchicken

Questo ha risolto il mio problema che mi aveva infastidito per 3 ore .. Grazie mille !!!
Yeojin,

10

Se sei su macOS e hai già installato mysql@5.7 tramite brew install:

  1. brew install mysql-connector-c
  2. brew unlink mysql@5.7
  3. brew link --overwrite --dry-run mysql@5.7 in primo luogo, per vedere quali link simbolici vengono sovrascritti
  4. brew link --overwrite --force mysql@5.7 per sovrascrivere effettivamente i symlink relativi a mysql con mysql@5.7
  5. pip install mysqlclient

9

L'ho risolto installando libmysqlclient:

sudo apt-get install libmysqlclient16-dev

9

Il MySQL-pythonpacchetto utilizza il mysql_configcomando per conoscere la mysqlconfigurazione sul proprio host. Il tuo host non ha il mysql_configcomando.

Il pacchetto di librerie di sviluppo MySQL (MySQL-devel-xxx) di dev.mysql.com fornisce questo comando e le librerie necessarie al pacchetto MySQL-python. I MySQL-develpacchetti si trovano nell'area download - community server. I nomi dei pacchetti della libreria di sviluppo MySQL iniziano con MySQL-devele variano in base alla versione di MySQL e alla piattaforma Linux (ad es MySQL-devel-5.5.24-1.linux2.6.x86_64.rpm.)

Si noti che non è necessario installare il server mysql.


8

Il pacchetto libmysqlclient-dev è obsoleto, quindi utilizzare il comando seguente per risolverlo.

Il pacchetto libmysqlclient-dev non è disponibile, ma è indicato da un altro pacchetto. Ciò può significare che il pacchetto è mancante, è obsoleto o è disponibile solo da un'altra fonte

sudo apt-get install default-libmysqlclient-dev

6

In centos 7 questo funziona per me:

yum install mariadb-devel
pip install mysqlclient

5

Sulla mia macchina Fedora 23 ho dovuto eseguire il seguente:

sudo dnf install mysql-devel


4

Penso che le seguenti linee possano essere eseguite sul terminale

 sudo ln -s /usr/local/zend/mysql/bin/mysql_config /usr/sbin/

Questa directory mysql_config è per il server zend su MacOSx. Puoi farlo per Linux come le seguenti righe

sudo ln -s /usr/local/mysql/bin/mysql_config /usr/sbin/

Questa è la directory mysql di linux predefinita.


4

Ho avuto questi problemi e ho risolto se aggiungendo un link simbolico a mysql_config.

Avevo installato mysql con homebrew e l'ho visto nell'output.

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

A seconda di come l'hai ottenuto mysqlsarà in luoghi diversi. Nel mio caso, una /usr/local/Cellar/mysql
volta che sai dove si trova, dovresti essere in grado di creare un collegamento simbolico a dove Python lo sta cercando. /usr/local/mysql

Questo ha funzionato per me.

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

4

Ho avuto lo stesso problema. L'ho risolto seguendo questo tutorial per installare Python con python3-dev su 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

E ora puoi configurare il tuo ambiente virtuale:

sudo apt-get install -y python3-venv
pyvenv my_env
source my_env/bin/activate

3

Devi installare il pacchetto python-dev:

sudo apt-get install python-dev

2

sudo apt-get install python-mysqldb

Python 2.5? Sembra che tu stia utilizzando una versione molto vecchia di Ubuntu Server (Hardy 8.04?). Conferma la versione Linux utilizzata dal server.

ricerca python-mysql sul database dei pacchetti ubuntu

Alcune informazioni aggiuntive:

Dal README di mysql-python -

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

MySQL-python è preconfezionato in Red Hat Linux 7.xe versioni successive. Ciò include Fedora Core e Red Hat Enterprise Linux. Puoi anche creare i tuoi pacchetti RPM come descritto sopra.

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

Confezionato come python-mysqldb_ ::

# apt-get install python-mysqldb

Oppure usa Synaptic.

.. _ python-mysqldb: http://packages.debian.org/python-mysqldb

Ubuntu ......

Come con Debian.

Nota a piè di pagina: se stai davvero utilizzando una distribuzione server più vecchia di Ubuntu 10.04, allora non hai il supporto ufficiale e dovresti aggiornare prima piuttosto che dopo.


Posso confermare per Debian 10 sudo apt-get install python-mysqldb
Tedo Vrbanec,

Questo è tutto ciò che devi fare: dev.mysql.com/doc/connector-python/en/…
Abhinandan Dubey

2

Questo metodo è solo per coloro che sanno che Mysql è installato ma non è ancora possibile trovare mysql_config. Questo succede se l'installazione di Python non riesce a trovare mysql_config nel percorso del tuo sistema, cosa che accade soprattutto se hai eseguito l'installazione tramite il pacchetto Mac .dmg o installato in un percorso personalizzato. Il modo più semplice e documentato di MySqlDB è cambiare site.cfg . Trova mysql_config che probabilmente si trova in / usr / local / mysql / bin / e modifica la variabile ovvero mysql_config proprio come sotto ed esegui di nuovo l'installazione. Non dimenticare di annullare il commento rimuovendo "#"

Cambia sotto la riga

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

per

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

a seconda del percorso nel sistema.

A proposito, ho usato l'installazione di Python dopo aver cambiato site.cfg

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


2

Finora, tutte le soluzioni (Linux) richiedono sudoo i diritti di root per l'installazione. Ecco una soluzione se non si dispone dei diritti di root e senza sudo. (no sudo apt install ...):

  1. Scarica il file .deb di libmysqlclient-dev, ad esempio da questo mirror
  2. Passare al file scaricato ed eseguire dpkg -x libmysqlclient-dev_<version tag>.deb .Questo estrarrà una cartella chiamata usr.
  3. Link simbolico ./usr/bin/mysql_configda qualche parte che si trova sul tuo $PATH:

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

  4. Ora dovrebbe essere in grado di trovare mysql_config

Testato su Ubuntu 18.04.


Funziona in CentOS 7? Supponendo che non ho installato root o dpkg, come dovrei affrontarlo?
Sohil,

Non c'è bisogno di essere root finché lavori nel tuo ambiente virtuale
BlackBear il

2

Per macOS Mojave, era necessaria una configurazione aggiuntiva, per i compilatori per trovare openssl potrebbe essere necessario impostare:

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

2

Penso che il modo più conveniente per risolvere questo problema nel 2020 sia usare un altro pacchetto Python. Non è necessario installare alcun altro software binario.

Prova questo

pip install mysql-connector-python

e poi

import mysql.connector

mydb = mysql.connector.connect(
          host="",
          user="",
          passwd="",
          database=""
          )      
cursor = mydb.cursor( buffered=True)
cursor.execute('show tables;')
cursor.execute('insert into test values (null, "a",10)')
mydb.commit()
mydb.disconnect()


1

Ho riscontrato lo stesso problema, ho appena aggiunto il percorso in cui * mysql_config * risiedeva nella variabile d'ambiente PATH e ha funzionato per me.


1

sudo apt-get build-dep python-mysqldb installerà tutte le dipendenze per compilare il pacchetto da PIP / easy_install


1

Come errore reale è

gcc ... -I/usr/include/python2.7 ...

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

e se non è possibile installare i pacchetti python-dev o python-devel, è possibile scaricare l'archivio con la versione necessaria delle fonti python da http://hg.python.org/ e posizionare i file delle intestazioni nella cartella appropriata per includere


1

Basta digitare:

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

Questo risolverà questi problemi.


3
Se ricevi un errore con mysql_config, installa questo:sudo apt-get install libmysqlclient-dev
Luciano D. Mota,

1

In CentOS 7, è necessario eseguire le seguenti operazioni:

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

#step2:
sudo yum install mysql-devel
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.