it-swarm.com.de

Wie installiere ich MySQLdb (Python-Datenzugriffsbibliothek für MySQL) unter Mac OS X?

Ich bin ein Python-Neuling, aber ich habe gerade einen Tag damit verbracht, herauszufinden, wie man MySQLdb richtig zum Laufen bringt, und das Universum enthält laut Google zahlreiche Hinweise darauf, was für ein PITA es ist, und eine unzulängliche Anzahl von Leitfäden, die scheinen veraltet. Angesichts der Tatsache, dass diese Website auf diese Art von Problemen eingehen soll, und ich weiß, dass ich in Zukunft einen Hinweis auf die Lösung benötigen wird, werde ich die Frage stellen, meine Antwort geben und sehen, was sich sonst noch auf der Website befindet Oberfläche.

Die Frage ist also, wie man MySQLdb auf Mac OS X zum Laufen bringt?

95
mblackwell8

Update für Benutzer, die Python3 verwenden: Sie können einfach mit conda install mysqlclient die Bibliotheken installieren, die für die Verwendung von MySQLdb erforderlich sind. Die folgende SO - Frage war ein hilfreicher Hinweis: Python 3 ImportError: Kein Modul namens 'ConfigParser' . Durch die Installation von mysqlclient werden mysqlclient, mysql-connector und llvmdev installiert (zumindest diese 3 Bibliotheken wurden auf meinem Computer installiert).

Hier ist die Geschichte meiner weitläufigen Erfahrung mit diesem Problem. Ich würde es gerne sehen, wenn es besser oder verallgemeinert ist, wenn Sie bessere Erfahrungen mit dem Problem haben ... Wenden Sie ein wenig von dieser SO - Magie an.

Anmerkung: Kommentare im nächsten Absatz beziehen sich auf Snow Leopard, nicht aber auf Lion, was scheinbar 64-Bit-MySQL erfordert.

Als Erstes sagt der Autor (noch?) Von MySQLdb hier , dass eines der verheerendsten Probleme darin besteht, dass OS X mit einer 32-Bit-Version von Python installiert wird, aber die meisten durchschnittlichen Jungs (ich eingeschlossen) springen wahrscheinlich zur Installation die 64-Bit-Version von MySQL. Fehler beim Verschieben ... Entfernen Sie die 64-Bit-Version, falls Sie sie installiert haben (Anweisungen zu dieser fiddly-Aufgabe finden Sie unter SO hier ). Laden Sie dann die 32-Bit-Version herunter und installieren Sie sie (Paket hier )

Es gibt zahlreiche Schritte zum Erstellen und Installieren der MySQLdb-Bibliotheken. Sie haben oft subtile Unterschiede. Dies schien mir am beliebtesten und lieferte die funktionierende Lösung. Ich habe es mit ein paar Änderungen unten wiedergegeben

Schritt 0: Bevor ich anfange, gehe ich davon aus, dass Sie MySQL, Python und GCC auf dem Mac installiert haben.

Schritt 1: Laden Sie den neuesten MySQL-Adapter für Python von SourceForge herunter.

Schritt 2: Extrahieren Sie das heruntergeladene Paket:

tar xzvf MySQL-python-1.2.2.tar.gz

Schritt 3: Reinigen Sie das Paket im Ordner:

Sudo python setup.py clean

PAARE VON ZUSÄTZLICHEN SCHRITTEN (von diesem Kommentar )

Schritt 3b: Entfernen Sie alles in Ihrem MySQL-python-1.2.2/build/* -Verzeichnis - vertrauen Sie nicht auf "python setup.py clean", um es für Sie zu erledigen

Schritt 3c: Entfernen Sie das Ei unter Users/$ USER/.python-eggs

Schritt 4: Ursprünglich musste _mysql.c editiert werden, ist aber jetzt NICHT MEHR ERFOLGREICH. Die MySQLdb-Community scheint diesen Fehler nun behoben zu haben.

Schritt 5: Erstellen Sie unter lib einen symbolischen Link, der auf ein Unterverzeichnis namens mysql verweist. Hier sucht es beim Kompilieren.

Sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql

Schritt 6: Bearbeiten Sie die Datei setup_posix.py und ändern Sie Folgendes

mysql_config.path = "mysql_config"

zu

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

Schritt 7: Erstellen Sie im selben Verzeichnis Ihr Paket neu (ignorieren Sie die damit verbundenen Warnungen).

Sudo python setup.py build

Schritt 8: Installieren Sie das Paket und Sie sind fertig.

Sudo python setup.py install

Schritt 9: Testen Sie, ob es funktioniert. Es funktioniert, wenn Sie MySQLdb importieren können.

python

>>> import MySQLdb

Schritt 10: Wenn beim Importieren eine Fehlermeldung angezeigt wird, dass Library not loaded: libmysqlclient.18.dylib mit: Reason: image not found endet, müssen Sie einen zusätzlichen Symlink erstellen.

Sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

Sie sollten dann in der Lage sein, import MySQLdb ohne Fehler zu schreiben.

Ein letzter Hickup ist jedoch, dass wenn Sie Python aus dem Build-Verzeichnis starten, diese Fehlermeldung angezeigt wird:

/Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.Egg/_mysql.py:3: UserWarning: Das Modul _mysql wurde bereits aus /Library/Python/2.5/ importiert. site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.Egg/_mysql.pyc, aber sys.path wird XXXX/MySQL-python-1.2.3c1 hinzugefügt

Dies ist für Google ziemlich einfach, aber um Ihnen die Mühe zu ersparen, werden Sie hier (oder vielleicht nicht ... keine besonders zukunftssichere URL) enden und herausfinden, dass Sie cd .. aus dem Build-Verzeichnis und Der Fehler sollte verschwinden.

Wie ich oben geschrieben habe, würde ich diese Antwort gerne verallgemeinern, da es zahlreiche andere spezifische Erfahrungen mit diesem schrecklichen Problem gibt. Bearbeiten Sie den Text oder geben Sie Ihre eigene, bessere Antwort ab.

129
mblackwell8

Ein schneller und einfacher Weg für Mac OS X 10.8 (Mountain Lion), 10.9 (Mavericks), 10.10 (Yosemite) und 10.11 (El Capitan):

Ich gehe davon aus, dass Sie XCode, seine Befehlszeilentools , Python und MySQL installiert haben.

  1. PIP installieren:

    Sudo easy_install pip
    
  2. Bearbeiten Sie ~/.profile: (Möglicherweise nicht in Mac OS X 10.10 erforderlich)

    nano ~/.profile
    

    Kopieren Sie die folgende zwei Zeilen und fügen Sie sie ein

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

    Speichern und schließen. Nachworte führen den folgenden Befehl aus:

    source  ~/.profile
    
  3. Installieren Sie MySQLdb

    Sudo pip install MySQL-python
    

    Um zu testen, ob alles gut funktioniert, probieren Sie es einfach aus

    python -c "import MySQLdb"
    

Es funktionierte für mich wie ein Zauber. Ich hoffe, es hilft.

Wenn Sie einen Fehler in Bezug auf eine fehlende Bibliothek feststellen: Bibliothek nicht geladen: libmysqlclient.18.dylib, dann müssen Sie sie wie folgt mit /usr/lib verknüpfen:

Sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib 
99
F Lekschas

Installiere mysql und python über Macports Die Portiers haben die schwierige Arbeit erledigt.

Sudo port install py26-mysql 
Sudo port install mysql5-server

sollte installieren, was Sie brauchen. (Siehe Stack-Überlauf für Kommentare zum MySQL-Server )

Wenn Sie nur eine Verbindung zu mysql herstellen und keinen Server betreiben müssen, reicht die erste Zeile aus.

Macports (Anfang 2013) bietet jetzt Binärdownloads für übliche Kombinationen von Betriebssystemen und ausführbarer Architektur an, für andere (und wenn Sie dies verlangen), wird es vom Quellcode erstellt.

In der Regel helfen macports (oder fink), wenn komplexe Bibliotheken usw. installiert werden müssen.

Nur Python-Code und wenn einfache C-Abhängigkeiten über Setuptools usw. eingerichtet werden können, wird es jedoch komplex, wenn Sie die beiden kombinieren.

36
Mark

Install pip:

Sudo easy_install pip

Brühen installieren:

Ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

Installieren Sie MySQL:

brew install mysql

Installieren Sie MySQLdb

Sudo pip install MySQL-python

Wenn Sie Probleme beim Kompilieren haben, bearbeiten Sie die Datei ~/.profile wie in einer der Antworten hier.

15
Ron Reiter

Hier ist ein weiterer Schritt, den ich durchlaufen habe, nachdem ich bei Schritt 9 einen Fehler erhalten hatte:

ImportError: dlopen(/Users/rick/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.Egg-tmp/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib

    Sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

Referenz: Danke! http://ageekstory.blogspot.com/2011_04_01_archive.html

13

Wie auf MySQL-Python auf einem Mac installiert :

pip uninstall MySQL-python
brew install mysql
pip install MySQL-python

Dann testen Sie es:

python -c "import MySQLdb"
9
Telmo Dias

Hatte gerade dieses Problem (wieder!) Nachdem ich eine neue Lion-Box bekommen hatte.

Beste Lösung, die ich gefunden habe (noch nicht 100% optimal, aber funktionierend):

sie can bekommen es, indem Sie XCode/Dev Tools von Apple herunterladen - dies ist ein großer Download - 

... aber stattdessen empfehle ich diesen Github mit dem, was Sie brauchen (und keinen X-Code haben): https://github.com/kennethreitz/osx-gcc-installer

Ich habe ihre vorgefertigte PKG für Löwen heruntergeladen. https://github.com/downloads/kennethreitz/osx-gcc-installer/GCC-10.7-v2.pkg

  • stellen Sie sicher, dass Sie eine 64-BIT-Version von MYSQL Community heruntergeladen haben. (Die DMG-Installation ist eine einfache Route) http://dev.mysql.com/downloads/mysql/

  • Pfade wie folgt einstellen:

    export PATH = $ PATH:/usr/local/mysql-XXXX 

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

    export ARCHFLAGS = '- Bogen x86_64'

BEACHTEN SIE, DASS:

1 In mysql-XXXX oben ist XXX die bestimmte Version, die Sie heruntergeladen haben. (Wahrscheinlich würde auch/usr/local/mysql/funktionieren, da dies höchstwahrscheinlich ein Alias ​​für das gleiche ist, aber ich werde nicht vorgeben, Ihre Einrichtung zu kennen.)

2 Ich habe gesehen, dass ARCHFLAGS auf '-Arch i386 -Arch x86_64' gesetzt wurde, aber die Angabe von nur x86_64 schien für mich besser zu funktionieren. (Ich kann mir einige Gründe dafür vorstellen, die jedoch nicht unbedingt relevant sind).

  • Installiere das Biest!

    easy_install MySQL-Python

  • LETZTER SCHRITT:

Füge dauerhaft den DYLD_LIBRARY_PATH hinzu! 

Sie können es zu Ihrem bash_profile oder ähnlichem hinzufügen .. Dies war der fehlende Schritt für mich, ohne den mein System weiterhin auf verschiedenen Fehlern bestand, die _mysql.so und so weiter fanden.

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

@ richard-boardman, ich habe gerade Ihre Softlink-Lösung bemerkt, die in der Tat das Gleiche tut, was meine PATH-Lösung tut ... Leute, was für Sie am besten funktioniert.

Beste Referenz: http://activeintelligence.org/blog/archive/mysql-python-aka-mysqldb-on-osx-lion/

4
jsh

Sie könnten versuchen, den reinen Python pymysql zu verwenden:

Sudo easy_install pymysql

(Oder verwenden Sie pip, wenn Sie es installiert haben.) Fügen Sie dies vor import MySQLdb in Ihren Code ein:

try:
    import pymysql
    pymysql.install_as_MySQLdb()
except ImportError:
    pass
3
Collin Anderson

Oder einfach versuchen:

> Sudo easy_install MySQL-python

Wenn es einen Fehler wie unten gibt:

EnvironmentError: mysql_config wurde nicht gefunden

, dann führe das einfach aus 

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

Wenn Sie das 64-Bit-MySQL-System verwenden, können Sie mit ARCHFLAGS Ihre CPU-Architektur beim Erstellen von MySQL-Python-Bibliotheken angeben.

ARCHFLAGS='-Arch x86_64' python setup.py build
ARCHFLAGS='-Arch x86_64' python setup.py install
0
Shan Valleru

Auf macos Sierra funktioniert das für mich, wo Python von Anaconda verwaltet wird:

anaconda search -t conda mysql-python

anaconda show CEFCA/mysql-python

conda install --channel https://conda.anaconda.org/CEFCA mysql-python

Die mit SQLAlchemy zu verwenden:

Python 2.7.13 | Continuum Analytics, Inc. | (Standardeinstellung: 20. Dezember 2016, 23:05:08 Uhr) [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] auf Darwin Geben Sie "help", "copyright", "credits" oder "license" ein, um weitere Informationen zu erhalten . Anaconda wird Ihnen von Continuum Analytics zur Verfügung gestellt. Bitte check out: http://continuum.io/thanks und https://anaconda.org

>>> aus sqlalchemy import *

>>> dbengine = create_engine ('mysql: // ....')

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

sollte das Problem für Sie beheben, da das System die Datei mysql_config nicht finden kann.

0
Varun Bhatia