sql >> Database >  >> RDS >> Mysql

Hoe installeer ik MySQLdb (Python data access library to MySQL) op Mac OS X?

Update voor degenen die Python3 gebruiken: U kunt eenvoudig conda install mysqlclient gebruiken om de bibliotheken te installeren die nodig zijn om MySQLdb te gebruiken zoals het momenteel bestaat. De volgende SO-vraag was een nuttige aanwijzing:Python 3 ImportError:Geen module met de naam 'ConfigParser' . Het installeren van mysqlclient zal mysqlclient, mysql-connector en llvmdev installeren (tenminste, het heeft deze 3 bibliotheken op mijn computer geïnstalleerd).

Hier is het verhaal van mijn kruipende ervaring met dit probleem. Zou het graag bewerkt of veralgemeend zien als je een betere ervaring met het probleem hebt... pas een beetje van die SO-magie toe.

Opmerking:opmerkingen in de volgende alinea zijn van toepassing op Snow Leopard, maar niet op Lion, waarvoor 64-bits MySQL lijkt te zijn vereist

Ten eerste zegt de auteur (nog steeds?) van MySQLdb hier dat een van de meest schadelijke problemen is dat OS X wordt geleverd met een 32-bits versie van Python, maar de meeste gemiddelde Joe's (inclusief ikzelf) springen waarschijnlijk over om de 64-bits versie van MySQL te installeren. Slechte zet... verwijder de 64-bits versie als je deze hebt geïnstalleerd (instructies voor deze lastige taak zijn beschikbaar op SO hier ), download en installeer vervolgens de 32-bits versie (pakket hier )

Er zijn talloze stapsgewijze instructies voor het bouwen en installeren van de MySQLdb-bibliotheken. Ze hebben vaak subtiele verschillen. Dit leek mij het meest populair, en bood de werkende oplossing. Ik heb het gereproduceerd met een paar bewerkingen hieronder

Stap 0: Voordat ik begin, neem ik aan dat je MySQL, Python en GCC geïnstalleerd op de mac.

Stap 1: Download de nieuwste MySQL voor Python-adapter van SourceForge.

Stap 2: Pak je gedownloade pakket uit:

tar xzvf MySQL-python-1.2.2.tar.gz

Stap 3: Reinig het pakket in de map:

sudo python setup.py clean

PAAR EXTRA STAPPEN, (van deze opmerking )

Stap 3b: Verwijder alles onder uw MySQL-python-1.2.2/build/* directory -- vertrouw de "python setup.py clean" niet om het voor u te doen

Stap 3c: Verwijder het ei onder Users/$USER/.python-eggs

Stap 4: Oorspronkelijk moest _mysql.c worden bewerkt, maar is nu NIET MEER NODIG. De MySQLdb-gemeenschap lijkt deze bug nu te hebben opgelost.

Stap 5: Maak een symbolische link onder lib om te verwijzen naar een submap met de naam mysql. Dit is waar het naar zoekt tijdens het compileren.

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

Stap 6: Bewerk de setup_posix.py en wijzig het volgende

mysql_config.path ="mysql_config"

naar

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

Stap 7: Bouw je pakket opnieuw op in dezelfde map (negeer de waarschuwingen die ermee gepaard gaan)

sudo python setup.py build

Stap 8: Installeer het pakket en je bent klaar.

sudo python setup.py install

Stap 9: Test of het werkt. Het werkt als je MySQLdb kunt importeren.

python

>>> import MySQLdb

Stap 10: Als u bij het proberen te importeren een foutmelding krijgt dat Library not loaded: libmysqlclient.18.dylib eindigend met:Reason: image not found je moet een extra symbolische link maken, namelijk:

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

U zou dan in staat moeten zijn om import MySQLdb te importeren zonder fouten.

Een laatste minpuntje is echter dat als je Python start vanuit de builddirectory, je deze foutmelding krijgt:

/Bibliotheek/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3:UserWarning:Module _mysql is al geïmporteerd uit /Library/Python/2.5/ site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.pyc, maar XXXX/MySQL-python-1.2.3c1 wordt toegevoegd aan sys.path

Dit is vrij eenvoudig voor Google, maar om u de moeite te besparen, komt u hier terecht (of misschien niet... geen bijzonder toekomstbestendige URL) en bedenk dat je moet cd .. uit de bouwmap en de fout zou moeten verdwijnen.

Zoals ik hierboven schreef, zou ik dit antwoord graag veralgemeend zien, aangezien er talloze andere specifieke ervaringen zijn met dit vreselijke probleem. Bewerk het weg, of geef je eigen, betere antwoord.



  1. Terug van Open Wereld 2013

  2. Volgorde als standaardwaarde voor een kolom

  3. Een tabel maken in MySQL

  4. Hoe LPAD() werkt in MariaDB