mysql_config wurde bei der Installation der mysqldb-Python-Schnittstelle nicht gefunden

478

Ich versuche, ein Python-Skript auf dem Linux-Server auszuführen, mit dem ich über ssh verbunden bin. Das Skript verwendet mysqldb. Ich habe alle anderen Komponenten, die ich brauche, aber wenn ich versuche, mySQLdb über setuptools wie folgt zu installieren:

python setup.py install

Ich erhalte den folgenden Fehlerbericht zum mysql_configBefehl.

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

Ist jemand auf diesen Fehler gestoßen und wenn ja, wie haben Sie ihn behoben / was kann ich tun, um mysqldb erfolgreich zu installieren?

user904542
quelle
1
Hi @ user904542 - Ich habe Ihre Frage bearbeitet, um sie hoffentlich etwas präziser zu gestalten und Ihnen einige Antworten zu geben :) Wenn es Ihnen nicht gefällt oder Sie zusätzliche Details angeben möchten, gibt es einen Bearbeitungslink direkt unter Ihrer Frage, den Sie verwenden kann verwendet werden, um entweder zu Ihrem Original zurückzukehren oder die von mir vorgenommenen Änderungen zu ergänzen.
3
Ich bin auf genau das gleiche Problem gestoßen, weil ich MySQL von der Quelle installiert habe. Wenn Sie dies auch tun, führen Sie einfach Folgendes aus, um mysql_config verfügbar zu machen: sudo ln -s / usr / local / mysql / bin / mysql_config / usr / bin / mysql_config oder fügen Sie / usr / local / mysql / bin / zu Ihrem Pfad hinzu.
Thi Duong Nguyen
Wenn Sie mysql bereits installiert haben, löst der obige Kommentar von Thi Duong Nguyen das Problem, indem Sie einen Symlink zur Datei mysql_config im Verzeichnis / usr / bin erstellen, das sich in dem Pfad befindet, den Python durchsucht.
Alex Boschmans
2
mach das einfach ------------- apt-get install python-mysqldb
shadow0359
@AlexBoschmans Symlinking /usr/binist falsch, es ist This usr/local/my...Antwort zu sehen.
Timo

Antworten:

701

mySQLdb ist eine Python-Schnittstelle für MySQL, aber es ist nicht MySQL selbst. Und anscheinend benötigt mySQLdb den Befehl 'mysql_config', also müssen Sie diesen zuerst installieren.

Können Sie bestätigen, dass Sie mysql selbst installiert haben oder nicht, indem Sie "mysql" über die Shell ausführen? Das sollte Ihnen eine andere Antwort als "mysql: Befehl nicht gefunden" geben.

Welche Linux-Distribution verwenden Sie? MySQL ist für die meisten Linux-Distributionen vorgepackt. Für Debian / Ubuntu ist die Installation von MySQL beispielsweise so einfach wie

sudo apt-get install mysql-server

mysql-config befindet sich in einem anderen Paket, das installiert werden kann (wiederum unter der Annahme von debian / ubuntu):

sudo apt-get install libmysqlclient-dev

Wenn Sie Mariadb verwenden, den Drop-in-Ersatz für MySQL, dann führen Sie

sudo apt-get install libmariadbclient-dev

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

Amarillion
quelle
1
Lesen von Paketlisten ... Fertig Erstellen des Abhängigkeitsbaums Lesen von Statusinformationen ... Fertig Hinweis: Wählen Sie libmysqlclient15-dev anstelle von libmysqlclient-dev aus. Einige Pakete konnten nicht installiert werden. Dies kann bedeuten, dass Sie eine unmögliche Situation angefordert haben oder wenn Sie die instabile Distribution verwenden, dass einige erforderliche Pakete noch nicht erstellt oder aus Incoming verschoben wurden. Die folgenden Informationen können helfen, die Situation zu beheben: Die folgenden Pakete haben nicht erfüllte Abhängigkeiten: libmysqlclient15-dev: Abhängig: zlib1g-dev, aber es wird nicht installiert E: Defekte Pakete
user904542
2
Sollte "sudo apt-get install mysql" "sudo apt-get install mysql-server" sein?
Kohanz
4
Beachten Sie, dass es für Debian sudo apt-get install mysql-serverundsudo apt-get install mysql-client
Marc Juchli
2
Können wir endlich zugeben, dass 'pip' ein kolossaler Misserfolg ist? Fehler wie diese sind so schmerzhaft und scheinen bei den meisten Paketen aufzutreten. Python benötigt dringend eine neue Lösung für die Paketverwaltung.
Eddie Sullivan
3
Für mich auf Debian war es libmysqlclient-dev. Tatsächlich habe ich beide libmariadbclient-dev libmysqlclient-dev installiert
mirek
187

Ich habe unter python-mysqlUbuntu 12.04 mit installiert

pip install mysql-python

Zuerst hatte ich das gleiche Problem:

Not Found "mysql_config"

Das hat bei mir funktioniert

$ sudo apt-get install libmysqlclient-dev

Dann hatte ich dieses Problem:

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

Dann habe ich es mit versucht

apt-get install python-dev

Und dann war ich glücklich :)

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...
xtornasol512
quelle
1
Funktioniert auch unter openSUSE, wo "libmysqlclient-dev" zu "libmysqlclient-devel" wird. Jetzt lässt sich das Pip-Paket einwandfrei installieren. Vielen Dank.
Pbarill
Vielen Dank! Funktioniert auch unter Ubuntu 14.04.1 LTS
Krasimir
Durch die Installation von Python Dev-Headern wurde der fehlende Python.h-Fehler behoben. Vielen Dank.
Natus Drew
3
Wenn Sie python3.x verwenden, versuchen Sie es mit apt-get install python3-dev.
Legolas Bloom
Dies hat bei mir am 14.04 nicht funktioniert - "E: Paket 'python-dev' hat keinen Installationskandidaten"
Rene Wooller
46

(Speziell für Mac OS X)

Ich habe viele Dinge ausprobiert, aber diese Befehle haben endlich für mich funktioniert.

  1. Installieren mysql
    brew install mysql
  2. brew unlink mysql
  3. brew install mysql-connector-c
  4. Fügen Sie den Ordner mysql bin zu PATH hinzu
    export PATH=/usr/local/Cellar/mysql/8.0.11/bin:$PATH
  5. mkdir /usr/local/Cellar/lib/
  6. Erstellen Sie einen Symlink
    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( Quelle )
  8. Zum Schluss installieren Sie den MySQL-Client
    LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/ pip install mysqlclient

Update: Falls dies nicht funktioniert, schlägt @vinyll vor, brew link mysqlvor Schritt 8 auszuführen .

Pulkit Pahwa
quelle
2
Nur Schritt 1-4 anwenden, dann funktioniert. Vielen Dank!
Kujiy
Verwenden Sie für Schritt 4 brew info mysqlden tatsächlichen / korrekten Pfad zur MySQL-Installation. Um die PATHÄnderung export PATH..beizubehalten , führen Sie das in Ihrem ~ / .bash_profile aus.
Gino Mempin
Schritt 1-4 mit brew link --overwrite mysql-connector-cArbeiten auf meinem Mac
Hunger
Schließlich funktioniert es auf meiner Catalina. Verwenden Sie spezifizieren open ssl ist sehr wichtig.
Glücklicher
4
Ich musste brew link mysqlvor Schritt 8 einen Schritt machen, um es zum Laufen zu bringen.
10.
37

Auf Red Hat musste ich machen

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

Dann hat es funktioniert.

Elliott
quelle
3
Arbeitete für mich auf CentOS 7:yum install MySQL-python
Hudolejev
2
Wenn Sie MySQL-pythonals Python-Paket installieren müssen oder virtualenv verwenden, kann dies hilfreich sein : yum install mysql-devel; venv/bin/pip install MySQL-python.
Hudolejev
2
Wenn Sie MariaDB unter CentOS 7 verwenden, führen Sie sudo yum install mariadb-develzuerst aus, dann können Sie mysqlclient vonpip install mysqlclient
Belter
Woher hast du gcc-devel rpm?
Fayaz
yum install mysql-develCentos 8
Diego Andrés Díaz Espinoza
33

Das Folgende funktionierte für mich unter Ubuntu 12.04 LTS:

apt-get install libmysqlclient-dev python-dev

Obwohl es funktioniert hat, habe ich trotzdem Folgendes getan:

export PATH=$PATH:/usr/local/mysql/bin/
Nasowah
quelle
27

Ich habe den gleichen Fehler beim Versuch, zu installieren mysql-python.

So habe ich es behoben.

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

Das Problem war, dass das Installationsprogramm die Datei mysql_config im Standardpfad nicht finden konnte. Jetzt kann es ..und es hat funktioniert ..

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

Hoffe das hilft.

Vielen Dank.

Mayank R Jain
quelle
Ich hatte das gleiche Problem bei der lokalen Installation von MySQL auf einem Mac mit OSX 10.9.4 (Mavericks). Diese Lösung hat auch bei mir funktioniert.
Deepend
20

Ich habe dieses Problem mit den folgenden Schritten behoben:

sudo apt-get install libmysqlclient-dev
sudo apt-get install python-dev
sudo python setup.py install
Zhaozhi
quelle
1
Wenn Sie> = Debian Stretch ausführen, stellen Sie sicher, dass Sie die Installation durchführen default-libmysqlclient-dev, da das reguläre libmysqlclient-devPaket keinen Installationskandidaten enthält.
Bono
19

Die Befehle (auch MySQL) mPATH fehlen möglicherweise.

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

Samwize
quelle
11

Schritt 1: - Installieren Sie Python3 und Python3-dev Both

sudo apt-get install python3 python3-dev

Schritt 2: - Installieren Sie Python & MySQL Connector

sudo apt-get install libmysqlclient-dev

Schritt 3: - Installieren Sie den Python MySQL Client

sudo apt-get install mysqlclient

Dies wird Ihr Problem lösen

Aka
quelle
Schritt 2 hat dies für mich behoben.
Saltchicken
Dies hat mein Problem behoben, das mich 3 Stunden lang nervte. Vielen Dank !!!
Yeojin
10

Wenn Sie unter MacOS sind und [email protected] bereits über Brew installiert haben, installieren Sie:

  1. brew install mysql-connector-c
  2. brew unlink [email protected]
  3. brew link --overwrite --dry-run [email protected] Zuerst, um zu sehen, welche Symlinks überschrieben werden
  4. brew link --overwrite --force [email protected] um mysql-bezogene Symlinks tatsächlich mit [email protected] zu überschreiben
  5. pip install mysqlclient
Rizky Luthfianto
quelle
9

Ich habe es durch die Installation von libmysqlclient behoben:

sudo apt-get install libmysqlclient16-dev
Thoslin
quelle
9

Das MySQL-pythonPaket verwendet den mysql_configBefehl, um Informationen zur mysqlKonfiguration auf Ihrem Host zu erhalten. Ihr Gastgeber hat das nichtmysql_config Befehl nicht.

Das MySQL-Entwicklungsbibliothekspaket (MySQL-devel-xxx) von dev.mysql.com bietet diesen Befehl und die vom MySQL-Python-Paket benötigten Bibliotheken. Die MySQL-develPakete befinden sich im Bereich Download - Community Server. Die Paketnamen der MySQL-Entwicklungsbibliothek beginnen mit MySQL-develund variieren je nach MySQL-Version und Linux-Plattform (z MySQL-devel-5.5.24-1.linux2.6.x86_64.rpm. B. ).

Beachten Sie, dass Sie den MySQL-Server nicht installieren müssen.

John Livingston
quelle
8

Das Paket libmysqlclient-dev ist veraltet. Verwenden Sie daher den folgenden Befehl, um das Problem zu beheben.

Das Paket libmysqlclient-dev ist nicht verfügbar, wird jedoch von einem anderen Paket referenziert. Dies kann bedeuten, dass das Paket fehlt, veraltet ist oder nur von einer anderen Quelle verfügbar ist

sudo apt-get install default-libmysqlclient-dev
Rajathithan Rajasekar
quelle
6

In Centos 7 funktioniert das bei mir:

yum install mariadb-devel
pip install mysqlclient
Rajiv Sharma
quelle
5

Auf meinem Fedora 23-Computer musste ich Folgendes ausführen:

sudo dnf install mysql-devel
Raubvogel
quelle
5

Für Alpine Linux:

$ apk add mariadb-dev mariadb-client mariadb-libs

MariaDB ist ein Ersatz für MySQL und wurde ab Alpine 3.2 zum neuen Standard. Siehe https://bugs.alpinelinux.org/issues/4264

aboutaaron
quelle
1
Das macht mein alpines Bild fast 500MiB, ich kam zu alpine für eine kleinere Bildgröße
ospider
Ich muss auch python3-dev installieren, damit die Bibliothek erstellt werden kann
ospider
4

Ich denke, folgende Zeilen können am Terminal ausgeführt werden

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

Dieses Verzeichnis mysql_config ist für zend server unter MacOSx. Sie können dies für Linux wie folgt tun

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

Dies ist das Standard-Linux-MySQL-Verzeichnis.

hkulekci
quelle
4

Ich hatte diese Probleme und löste sie, indem ich einen Symlink hinzufügte mysql_config.

Ich hatte MySQL mit Homebrew installiert und sah dies in der Ausgabe.

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

Je nachdem, wie Sie es bekommen mysqlhaben, wird es an verschiedenen Orten sein. In meinem Fall /usr/local/Cellar/mysql
Sobald Sie wissen, wo es sich befindet, sollten Sie in der Lage sein, einen symbolischen Link zu dem Ort zu erstellen, an dem Python danach sucht. /usr/local/mysql

Das hat bei mir funktioniert.

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

Ich hatte das gleiche Problem. Ich habe es gelöst, indem ich diesem Tutorial gefolgt bin, um Python mit python3-dev unter Ubuntu 16.04 zu installieren:

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

Und jetzt können Sie Ihre virtuelle Umgebung einrichten:

sudo apt-get install -y python3-venv
pyvenv my_env
source my_env/bin/activate
Kleines Gehirn
quelle
3

Sie müssen das Python-Dev-Paket installieren:

sudo apt-get install python-dev
ebarch
quelle
2

sudo apt-get installiere python-mysqldb

Python 2.5? Klingt so, als würden Sie eine sehr alte Version von Ubuntu Server (Hardy 8.04?) Verwenden. Bitte bestätigen Sie, welche Linux-Version der Server verwendet.

Python-MySQL-Suche in der Ubuntu-Paketdatenbank

Einige zusätzliche Informationen:

Aus der README von MySQL-Python -

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

MySQL-Python ist in Red Hat Linux 7.x und höher vorinstalliert. Dies umfasst Fedora Core und Red Hat Enterprise Linux. Sie können auch Ihre eigenen RPM-Pakete erstellen, wie oben beschrieben.

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

Verpackt als python-mysqldb_ ::

# apt-get install python-mysqldb

Oder verwenden Sie Synaptic.

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

Ubuntu ......

Gleich wie bei Debian.

Fußnote: Wenn Sie wirklich eine Serverdistribution verwenden, die älter als Ubuntu 10.04 ist, haben Sie keinen offiziellen Support mehr und sollten eher früher als später ein Upgrade durchführen.

Gary
quelle
Ich kann für Debian 10 sudo apt-get install python-mysqldb
Tedo Vrbanec
Dies ist alles, was Sie tun müssen: dev.mysql.com/doc/connector-python/en/…
Abhinandan Dubey
2

Diese Methode ist nur für diejenigen gedacht, die wissen, dass MySQL installiert ist, aber mysql_config immer noch nicht gefunden werden kann. Dies geschieht, wenn die Python-Installation mysql_config in Ihrem Systempfad nicht finden kann. Dies geschieht meistens, wenn Sie die Installation über das .dmg Mac Package durchgeführt oder unter einem benutzerdefinierten Pfad installiert haben. Der einfachste und dokumentierteste Weg von MySqlDB besteht darin, die site.cfg zu ändern . Suchen Sie die mysql_config, die sich wahrscheinlich in / usr / local / mysql / bin / befindet, und ändern Sie die Variable mysql_config wie unten beschrieben, und führen Sie die Installation erneut aus. Vergessen Sie nicht, den Kommentar zu entfernen, indem Sie "#" entfernen.

Ändern Sie unter der Zeile

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

zu

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

abhängig vom Pfad in Ihrem System.

Übrigens habe ich Python-Installation verwendet, nachdem ich die site.cfg geändert habe

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

Ahsan.Amin
quelle
2

Bisher erfordern alle Lösungen (Linux) sudooder Root-Rechte für die Installation. Hier ist eine Lösung, wenn Sie keine Root-Rechte haben und ohne sudo. (nein sudo apt install ...):

  1. Laden Sie die .deb-Datei des libmysqlclient-dev herunter, z. B. von diesem Spiegel
  2. Navigieren Sie zu der heruntergeladenen Datei und führen Sie dpkg -x libmysqlclient-dev_<version tag>.deb .diese aus. Dadurch wird ein Ordner mit dem Namen extrahiert usr.
  3. Symlink ./usr/bin/mysql_configzu einer Stelle, die sich auf Ihrer Website befindet $PATH:

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

  4. Es sollte jetzt in der Lage sein zu finden mysql_config

Getestet unter Ubuntu 18.04.

RunOrVeith
quelle
Funktioniert das in CentOS 7? Angenommen, ich habe keinen Root-Zugriff oder kein dpkg installiert. Wie soll ich das angehen?
Sohil
Sie müssen nicht root sein, solange Sie in Ihrer eigenen virtuellen Umgebung arbeiten
BlackBear
2

Für macOS Mojave war eine zusätzliche Konfiguration erforderlich, damit Compiler OpenSSL finden, müssen Sie möglicherweise Folgendes festlegen:

export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"
Haidar Zeineddine
quelle
2

Ich denke, der bequemste Weg, um dieses Problem im Jahr 2020 zu lösen, ist die Verwendung eines anderen Python-Pakets. Wir müssen keine andere Binärsoftware installieren.

Versuche dies

pip install mysql-connector-python

und dann

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()

xfdywy
quelle
1

Ich bin auf dasselbe Problem gestoßen, habe nur den Pfad hinzugefügt, in dem sich * mysql_config * zur Umgebungsvariablen PATH befand, und es hat bei mir funktioniert.

Flyer
quelle
1

sudo apt-get build-dep python-mysqldb installiert alle Abhängigkeiten, um das Paket aus PIP / easy_install zu erstellen

Thomas Grainger
quelle
1

Als tatsächlicher Fehler gilt

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

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

und Wenn Sie die Pakete python-dev oder python-devel nicht installieren können, können Sie das Archiv mit der erforderlichen Version der Python-Quellen von http://hg.python.org/ herunterladen und die Header-Dateien in den entsprechenden Ordner zum Einschließen legen

Oleg Neumyvakin
quelle
1

Tippe einfach:

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

Dies wird diese Probleme lösen.

Luciano D. Mota
quelle
3
Wenn Sie eine Fehler mit mysql_config erhalten, ist dies alles:sudo apt-get install libmysqlclient-dev
Luciano D. Mota
1

In CentOS 7 sollten folgende Schritte ausgeführt werden:

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

#step2:
sudo yum install mysql-devel
DachuanZhao
quelle