Mac OS X - EnvironmentError: mysql_config nicht gefunden


120

Zunächst einmal habe ich das schon gesehen:

Die Installation von pip mysql-python schlägt mit EnvironmentError fehl: mysql_config wurde nicht gefunden

Das Problem

Ich versuche, Django in einem Google App Engine-Projekt zu verwenden. Ich konnte jedoch nicht starten, da der Server aus folgenden Gründen nicht ordnungsgemäß gestartet werden kann:

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

Ich habe einige Nachforschungen angestellt und alles deutete darauf hin, dass ich MySQL-Python installieren musste, da es anscheinend nicht auf meinem System ist. Ich habe tatsächlich versucht, es zu deinstallieren und habe Folgendes erhalten:

Cannot uninstall requirement mysql-python, not installed

Wann immer ich tatsächlich versuche, über zu installieren:

sudo pip install MySQL-python

Ich erhalte eine Fehlermeldung:

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

Ich habe bereits versucht zu laufen:

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

aber das schien nicht zu helfen, da ich den Installationsbefehl erneut ausführte und er immer noch fehlschlug.

Irgendwelche Ideen?

Bitte beachten Sie, dass ich nicht in einer virtuellen Umgebung bin.


Sie können jederzeit zu der Datei gehen, die die erhöht, EnvironmentErrorund weitere nützliche Debug-Informationen drucken, wie z os.getcwd(). Sie können auch ein hinzufügen pdb.set_trace()und Dinge herausfinden.
ealfonso

Antworten:


339

Ok, zunächst möchte ich überprüfen, ob ich auf derselben Seite wie Sie bin:

  • Sie haben Python installiert
  • Du machtest brew install mysql
  • Du machtest export PATH=$PATH:/usr/local/mysql/bin
  • Und schließlich haben Sie pip install MySQL-Python(oder pip3 install mysqlclientwenn Sie Python 3 verwenden)

Wenn Sie alle diese Schritte in derselben Reihenfolge ausgeführt haben und dennoch ein Fehler aufgetreten ist, lesen Sie bis zum Ende weiter. Wenn Sie diese genauen Schritte jedoch nicht befolgt haben, versuchen Sie es von Anfang an.

Sie haben also die Schritte befolgt und erhalten immer noch einen Fehler. Nun, es gibt einige Dinge, die Sie versuchen könnten:

  1. Versuchen Sie, which mysql_configvor Bash davonzulaufen. Es wird wahrscheinlich nicht gefunden. Deshalb findet der Build es auch nicht. Versuchen Sie zu rennen locate mysql_configund sehen Sie, ob etwas zurückkommt. Der Pfad zu dieser Binärdatei muss sich entweder in der Umgebungsvariablen $ PATH Ihrer Shell befinden oder explizit in der Datei setup.py für das Modul, vorausgesetzt, es wird an einer bestimmten Stelle nach dieser Datei gesucht.

  2. Versuchen Sie, anstatt MySQL-Python zu verwenden, 'mysql-connector-python' zu verwenden pip install mysql-connector-python. Es kann mit installiert werden . Weitere Informationen hierzu finden Sie hier und hier .

  3. Suchen Sie manuell den Speicherort von 'mysql / bin', 'mysql_config' und 'MySQL-Python' und fügen Sie alle diese zur Umgebungsvariablen $ PATH hinzu.

  4. Wenn alle oben genannten Schritte fehlschlagen, können Sie versuchen, 'mysql' mit MacPorts zu installieren. In diesem Fall würde die Datei 'mysql_config' tatsächlich 'mysql_config5' heißen. In diesem Fall müssten Sie dies nach der Installation tun : export PATH=$PATH:/opt/local/lib/mysql5/bin. Weitere Details finden Sie hier .

Hinweis 1: Ich habe einige Leute gesehen, die sagten, dass die Installation python-devund libmysqlclient-devauch geholfen haben, aber ich weiß nicht, ob diese Pakete unter Mac OS verfügbar sind.

Hinweis 2: Stellen Sie außerdem sicher, dass Sie versuchen, die Befehle als root auszuführen.

Ich habe meine Antworten von (außer meinem Gehirn) diesen Orten erhalten (vielleicht könnten Sie sie sich ansehen, um zu sehen, ob es helfen würde): 1 , 2 , 3 , 4 .

Ich hoffte, ich hätte geholfen und würde mich freuen zu wissen, ob dies funktioniert oder nicht. Viel Glück.


2
Tolle Erklärung, FWIW unter Linux, die Installation von Python-Dev und Libmysqlclient-Dev ist normalerweise das einzige, was getan werden muss, damit es funktioniert, aber unter OSX musste ich nur mein Bad aktualisieren. Ich glaube, unter Linux können Sie MySQL installieren, ohne die Python-Deps für MySQL-Python zu erhalten, wenn Sie die angegebenen Entwicklungsbibliotheken nicht installieren. (Hat diesen Fehler sooo oft gemacht, lol)
Iain Duncan

1
Nach dem Upgrade auf Yosemite beschwert es sich nun auch über das Fehlen von "stdio.h". Sie können das beheben, indem Sie hier gehen: stackoverflow.com/questions/19580758/…
Mihai Oprea

4
Laufen brew install mysqlbehoben. Auch dieser Befehl which mysql-confighat bei mir nicht funktioniert, aber which mysql_configfunktioniert.
Tschad

1
Ich musste auch diese Zeile zu meiner .bash_profileDatei hinzufügen :export DYLD_LIBRARY_PATH=/usr/local/Cellar/mysql/5.7.9/lib/
JeffThompson

2
Ich musste auf die Installation von export PATH=$PATH:/usr/local/Cellar/mysql/5.7.20/bin
Brews

6

Ich hatte dieses Problem für immer behoben - 3 Stunden 17 Minuten. Was mich besonders ärgerte, war, dass ich SQL bereits durch vorherige Uni-Arbeiten auf meinem System installiert hatte, aber pip / pip3 erkannte es nicht. Diese und viele andere Themen, nach denen ich im Internet gesucht habe, waren hilfreich, um das Problem zu lösen, haben aber die Dinge nicht wirklich gelöst.

ANTWORTEN

Pip sucht im Homebrew-Verzeichnis nach MySQL-Binärdateien, die sich relativ zu Macintosh HD @ befinden.

/usr/local/Cellar/

Daher habe ich festgestellt, dass Sie hierfür einige Änderungen vornehmen müssen

Schritt 1: Laden Sie MySql herunter, falls dies noch nicht geschehen ist. Https://dev.mysql.com/downloads/

Schritt 2: Suchen Sie es relativ zu Macintosh HD und CD

/usr/local/mysql/bin

Schritt 3: Sobald Sie dort das Terminal geöffnet haben und einen Texteditor Ihrer Wahl verwenden - ich bin selbst ein Neovim-Typ, also habe ich getippt (kommt nicht automatisch mit Mac ... eine andere Geschichte für einen anderen Tag)

nvim mysql_config

Schritt 4: Sie sehen in ca. Zeile 112

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

Ändern

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

* Sie werden feststellen, dass diese Datei schreibgeschützt ist, wenn Sie vim oder neovim verwenden

:w !sudo tee %

Schritt 5: Gehen Sie zum Ausgangsverzeichnis und bearbeiten Sie die Datei .bash_profile

cd ~

Dann

nvim .bash_profile

und hinzufügen

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

in die Datei dann speichern

Schritt 6: Suchen Sie relativ zu Macintosh HD Pfade und fügen Sie sie hinzu

cd /private/etc/

dann

nvim paths

und hinzufügen

/usr/local/mysql/bin

* Sie werden erneut feststellen, dass diese Datei schreibgeschützt ist, wenn Sie vim oder neovim verwenden

:w !sudo tee % 

dann

cd ~

Aktualisieren Sie dann das Terminal mit Ihren Änderungen, indem Sie es ausführen

source .bash_profile

Schließlich

pip3 install mysqlclient

Und Viola. Denken Sie daran, es ist eine Stimmung.


Mein libsInneres mysql_configwar bereits wie im Abschnitt "Wechseln zu" beschrieben. Das Hinzufügen des Pfads zu private/etc, um die globale Installation zu ermöglichen mysqlclient, schlug jedoch zuvor fehl.
Martin-Martin

5

Wenn Sie kein vollständiges MySQL installieren möchten, können wir dies beheben, indem Sie einfach MySQL-Client installieren. brew install mysqlclient Sobald cmd abgeschlossen ist, werden Sie aufgefordert, die folgende Zeile hinzuzufügen ~/.bash_profile:

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

Terminal schließen und neues Terminal starten und fortfahren pip install mysqlclient


3

Ich verwende Python 3.6 unter MacOS Catalina. Mein Problem war, dass ich versucht habe zu installierenmysqlclient==1.4.2.post1 und es immer wieder mysql_config nicht gefunden Fehler auslöst.

Dies sind die Schritte, die ich unternommen habe, um das Problem zu lösen.

  1. Installieren Sie MySQL-Connector-C mit Brew (wenn Sie MySQL bereits installiert haben, entfernen Sie zuerst die Verknüpfung brew unlink mysql) -brew install mysql-connector-c
  2. Öffnen Sie mysql_config und bearbeiten Sie die Datei in Zeile 112
# Create options 
libs="-L$pkglibdir"
libs="$libs -lmysqlclient -lssl -lcrypto"
  1. brew info openssl - Auf diese Weise erhalten Sie weitere Informationen darüber, was Sie tun müssen, um openssl in PATH einzufügen
  2. In Bezug auf Schritt 3 müssen Sie dies tun, um openssl in PATH - zu setzen. echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
  3. für Compiler zu finden openssl - export LDFLAGS="-L/usr/local/opt/openssl/lib"
  4. für Compiler zu finden openssl - export CPPFLAGS="-I/usr/local/opt/openssl/include"

Danke dir! Ich habe so viele Dinge ausprobiert und Ihre Methode hat bei mir funktioniert.
Yagimutsu

2

Dies passiert auch, als ich mysqlclient installiert habe.

$ pip install mysqlclient

Wie user3429036 sagte,

$ brew install mysql

1

Diese Antwort richtet sich an MacOS-Benutzer, die nicht brewvom offiziellen, sondern vom offiziellen Benutzer installiert haben .dmg/.pkg. Dieses Installationsprogramm kann Ihre nicht bearbeiten PATH, was dazu führt, dass Dinge aus der Box herausbrechen:

  1. Alle MySQL - Befehle wie mysql, mysqladmin, mysql_configkann, etc nicht gefunden werden, und als Ergebnis:
  2. Das "MySQL-Einstellungsfenster" wird in den Systemeinstellungen nicht angezeigt
  3. Sie können keine API installieren, die mit MySQL kommuniziert, einschließlich mysqlclient

Was Sie tun müssen, ist das Anhängen des MySQL- binOrdners (normalerweise /usr/local/mysql/binin Ihrem, PATHindem Sie diese Zeile in Ihre ~/.bash_profileDatei einfügen:

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

Sie sollten dann Ihre neu laden, ~/.bash_profiledamit die Änderung in Ihrer aktuellen Terminalsitzung wirksam wird:

source ~/.bash_profile

Vor der Installation mysqlclientmüssen Sie jedoch die XcodeBuild-Lizenz akzeptieren:

sudo xcodebuild -license

Befolgen Sie die Anweisungen, um Ihre Familie abzumelden. Danach sollten Sie die Installation mysqlclientohne Probleme durchführen können:

pip install mysqlclient

Nach der Installation müssen Sie noch einen Schritt tun, um einen Laufzeitfehler zu beheben, der mit MySQL geliefert wird ( Dynamische Bibliothek libmysqlclient.dylibnicht gefunden ), indem Sie diese Zeile zu Ihrem Pfad für dynamische Systembibliotheken hinzufügen:

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


Ich habe Ihre Antwort gesehen, nachdem ich die Binärdateien auf der Festplatte durch Ausführen gefunden habe sudo lsof -i :3306 , um die PID des aktiven MySQL-Prozesses anzuzeigen, und diese dann ausgeführt sudo -P <pid>habe, um die geöffneten Dateien anzuzeigen. Dies kam mit, /usr/local/mysql-8.0.18-macos10.14-x86_64/binwas ich hinzugefügt habe $PATHund voila !
Neil C. Obremski

0

Wenn Sie mysql mit Homebrew durch Angabe einer Version installiert haben, ist mysql_config hier vorhanden. - /usr/local/Cellar/mysql@5.6/5.6.47/bin

Sie finden den Pfad des SQL-Bin mithilfe des Befehls ls im Verzeichnis / usr / local /

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

Fügen Sie den Pfad wie folgt zum Bash-Profil hinzu.

nano ~/.bash_profile

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

0

Das Problem in meinem Fall war, dass ich den Befehl in einer virtuellen Python-Umgebung ausführte und nicht den Pfad dazu hatte / usr / local / mysql / bin hatte, obwohl ich ihn in die Datei .bash_profile eingefügt habe. Das Exportieren des Pfads in die virtuelle Umgebung hat für mich funktioniert.

Zu Ihrer Information befindet sich sql_config im bin-Verzeichnis.


-1

Die Installation von Brew oder Apt-Get ist für mich ebenfalls nicht einfach. Deshalb habe ich MySQL heruntergeladen über: https://dev.mysql.com/downloads/connector/python/ und installiert. So kann ich mysql_config in diesem Verzeichnis finden: / usr / local / mysql / bin

Der nächste Schritt ist:

  1. export PATH = $ PATH: / usr / local / mysql / bin
  2. pip install MySQL-python == 1.2.5
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.