Uppdatering för de som använder Python3: Du kan helt enkelt använda conda install mysqlclient
för att installera de bibliotek som krävs för att använda MySQLdb som det för närvarande finns. Följande SO-fråga var en användbar ledtråd:Python 3 ImportError:Ingen modul med namnet 'ConfigParser'
. Genom att installera mysqlclient installeras mysqlclient, mysql-connector och llvmdev (åtminstone installerade den dessa 3 bibliotek på min maskin).
Här är berättelsen om min vandrande erfarenhet av detta problem. Skulle gärna se det redigerat eller generaliserat om du har bättre erfarenhet av problemet... använd lite av den SÅ magin.
Obs! Kommentarerna i nästa stycke tillämpas på Snow Leopard, men inte på Lion, som verkar kräva 64-bitars MySQL
Först och främst säger författaren (fortfarande?) av MySQLdb här att ett av de mest skadliga problemen är att OS X kommer installerat med en 32-bitarsversion av Python, men de flesta genomsnittliga joes (inklusive mig själv) hoppar förmodligen för att installera 64-bitarsversionen av MySQL. Dåligt drag... ta bort 64-bitarsversionen om du har installerat den (instruktioner för denna krångliga uppgift finns på SO här ), ladda ner och installera sedan 32-bitarsversionen (paketet här a> )
Det finns många steg-för-steg om hur man bygger och installerar MySQLdb-biblioteken. De har ofta subtila skillnader. Detta verkade vara den mest populära för mig och gav den fungerande lösningen. Jag har återskapat det med ett par redigeringar nedan
Steg 0: Innan jag börjar antar jag att du har MySQL, Python och GCC installerat på Mac.
Steg 1: Ladda ner den senaste MySQL för Python-adaptern från SourceForge.
Steg 2: Extrahera ditt nedladdade paket:
tar xzvf MySQL-python-1.2.2.tar.gz
Steg 3: Rengör paketet inuti mappen:
sudo python setup.py clean
PAR EXTRA STEG, (från denna kommentar )
Steg 3b: Ta bort allt under din MySQL-python-1.2.2/build/*-katalog -- lita inte på att "python setup.py clean" gör det åt dig
Steg 3c: Ta bort ägget under Users/$USER/.python-eggs
Steg 4: Ursprungligen krävdes redigering av _mysql.c, men är nu INTE NÖDVÄNDIGT LÄNGRE. MySQLdb-communityt verkar ha åtgärdat detta fel nu.
Steg 5: Skapa en symbolisk länk under lib för att peka på en underkatalog som heter mysql. Det är här den letar efter under kompileringen.
sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql
Steg 6: Redigera setup_posix.py och ändra följande
mysql_config.path ="mysql_config"
till
mysql_config.path ="/usr/local/mysql/bin/mysql_config"
Steg 7: I samma katalog, bygg om ditt paket (ignorera varningarna som följer med det)
sudo python setup.py build
Steg 8: Installera paketet och du är klar.
sudo python setup.py install
Steg 9: Testa om det fungerar. Det fungerar om du kan importera MySQLdb.
python
>>> import MySQLdb
Steg 10: Om du när du försöker importera får ett felmeddelande om att Library not loaded: libmysqlclient.18.dylib
slutar med:Reason: image not found
du måste skapa ytterligare en symbollänk som är:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Du bör då kunna import MySQLdb
utan några fel.
Ett sista problem är dock att om du startar Python från byggkatalogen får du det här felet:
/Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3:Användarvarning:Modulen _mysql har redan importerats från /Library/Python/2.5 site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.pyc, men XXXX/MySQL-python-1.2.3c1 läggs till i sys.path
Det här är ganska lätt att Google, men för att spara dig besväret hamnar du här
(eller kanske inte... inte en särskilt framtidssäker URL) och ta reda på att du måste cd ..
ur byggkatalogen och felet bör försvinna.
Som jag skrev överst skulle jag gärna se det här svaret generaliserat, eftersom det finns många andra specifika erfarenheter av detta hemska problem där ute. Redigera bort, eller ge ditt eget, bättre svar.