Opdatering for dem, der bruger Python3: Du kan blot bruge conda install mysqlclient
at installere de biblioteker, der kræves for at bruge MySQLdb, som den eksisterer i øjeblikket. Følgende SO-spørgsmål var et nyttigt fingerpeg:Python 3 ImportError:Intet modul med navnet 'ConfigParser'
. Installation af mysqlclient vil installere mysqlclient, mysql-connector og llvmdev (i det mindste installerede den disse 3 biblioteker på min maskine).
Her er fortællingen om min travle oplevelse med dette problem. Ville elske at se det redigeret eller generaliseret, hvis du har bedre erfaring med problemet... anvend lidt af den SÅ magi.
Bemærk:Kommentarer i næste afsnit anvendes på Snow Leopard, men ikke på Lion, som ser ud til at kræve 64-bit MySQL
For det første siger forfatteren (stadig?) af MySQLdb her at et af de mest skadelige problemer er, at OS X kommer installeret med en 32 bit version af Python, men de fleste gennemsnitlige joes (inklusive mig selv) hopper nok for at installere 64 bit versionen af MySQL. Dårligt træk... fjern 64 bit versionen, hvis du har installeret den (instruktioner til denne besværlige opgave er tilgængelige på SO her ), download og installer derefter 32 bit versionen (pakke her )
Der er adskillige trin-for-trin til, hvordan man bygger og installerer MySQLdb-bibliotekerne. De har ofte subtile forskelle. Dette forekom mig at være den mest populære og leverede den fungerende løsning. Jeg har gengivet det med et par redigeringer nedenfor
Trin 0: Før jeg starter, går jeg ud fra, at du har MySQL, Python og GCC installeret på mac.
Trin 1: Download den seneste MySQL til Python-adapter fra SourceForge.
Trin 2: Udpak din downloadede pakke:
tar xzvf MySQL-python-1.2.2.tar.gz
Trin 3: Rens pakken inde i mappen:
sudo python setup.py clean
PAR EKSTRA TRIN, (fra denne kommentar )
Trin 3b: Fjern alt under din MySQL-python-1.2.2/build/*-mappe -- stol ikke på, at "python setup.py clean" gør det for dig
Trin 3c: Fjern ægget under Users/$USER/.python-eggs
Trin 4: Oprindeligt krævet redigering _mysql.c, men er nu IKKE LÆNGER NØDVENDIG. MySQLdb-fællesskabet ser ud til at have rettet denne fejl nu.
Trin 5: Opret et symbolsk link under lib for at pege på en undermappe kaldet mysql. Det er her, den leder efter under kompilering.
sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql
Trin 6: Rediger setup_posix.py og rediger følgende
mysql_config.path ="mysql_config"
til
mysql_config.path ="/usr/local/mysql/bin/mysql_config"
Trin 7: I samme mappe skal du genopbygge din pakke (ignorer advarslerne, der følger med den)
sudo python setup.py build
Trin 8: Installer pakken, og du er færdig.
sudo python setup.py install
Trin 9: Test om det virker. Det virker, hvis du kan importere MySQLdb.
python
>>> import MySQLdb
Trin 10: Hvis du, når du forsøger at importere, modtager en fejlmeddelelse om, at Library not loaded: libmysqlclient.18.dylib
slutter med:Reason: image not found
du skal oprette et ekstra symbollink, som er:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Du skulle derefter være i stand til at import MySQLdb
uden fejl.
Et sidste problem er dog, at hvis du starter Python fra build-mappen, får du denne fejl:
/Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3:BrugerAdvarsel:Modulet _mysql var allerede importeret fra /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 føjes til sys.path
Det er ret nemt at Google, men for at spare dig for besværet ender du her
(eller måske ikke... ikke en særlig fremtidssikret URL) og finde ud af, at du skal cd ..
ud af build-mappen, og fejlen skulle forsvinde.
Som jeg skrev øverst, ville jeg elske at se dette svar generaliseret, da der er adskillige andre specifikke oplevelser af dette forfærdelige problem derude. Rediger væk, eller giv dit eget, bedre svar.