Mysql
 sql >> Database >  >> RDS >> Mysql

Come installare MySQLdb (libreria di accesso ai dati Python su MySQL) su Mac OS X?

Aggiornamento per chi usa Python3: Puoi semplicemente usare conda install mysqlclient per installare le librerie necessarie per utilizzare MySQLdb così com'è attualmente esistente. La seguente domanda SO è stata un indizio utile:Python 3 ImportError:nessun modulo denominato 'ConfigParser' . L'installazione di mysqlclient installerà mysqlclient, mysql-connector e llvmdev (almeno, ha installato queste 3 librerie sulla mia macchina).

Ecco il racconto della mia sconclusionata esperienza con questo problema. Mi piacerebbe vederlo modificato o generalizzato se hai una migliore esperienza del problema... applica un po' di quella magia SO.

Nota:i commenti nel paragrafo successivo si applicano a Snow Leopard, ma non a Lion, che sembra richiedere MySQL a 64 bit

Prima di tutto, l'autore (ancora?) di MySQLdb dice qui che uno dei problemi più perniciosi è che OS X viene installato con una versione a 32 bit di Python, ma la maggior parte dei joe medi (me compreso) probabilmente saltano per installare la versione a 64 bit di MySQL. Mossa sbagliata... rimuovi la versione a 64 bit se l'hai installata (le istruzioni su questa complicata attività sono disponibili su SO qui ), quindi scarica e installa la versione a 32 bit (pacchetto qui )

Esistono numerosi passaggi su come creare e installare le librerie MySQLdb. Spesso hanno sottili differenze. Questo mi è sembrato il più popolare e ha fornito la soluzione funzionante. L'ho riprodotto con un paio di modifiche di seguito

Passaggio 0: Prima di iniziare, presumo che tu abbia MySQL, Python e GCC installato sul Mac.

Passaggio 1: Scarica l'ultimo adattatore MySQL per Python da SourceForge.

Passaggio 2: Estrai il pacchetto scaricato:

tar xzvf MySQL-python-1.2.2.tar.gz

Passaggio 3: All'interno della cartella, pulisci il pacchetto:

sudo python setup.py clean

COPPIA DI PASSAGGI EXTRA, (da questo commento )

Fase 3b: Rimuovi tutto nella directory MySQL-python-1.2.2/build/* -- non fidarti che "python setup.py clean" lo faccia per te

Passaggio 3c: Rimuovi l'uovo in Utenti/$USER/.python-eggs

Passaggio 4: Inizialmente era necessario modificare _mysql.c, ma ora NON È PIÙ NECESSARIO. La community di MySQLdb sembra aver corretto questo bug ora.

Passaggio 5: Crea un collegamento simbolico sotto lib per puntare a una sottodirectory chiamata mysql. Qui è dove cerca durante la compilazione.

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

Passaggio 6: Modifica setup_posix.py e cambia quanto segue

mysql_config.path ="mysql_config"

a

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

Passaggio 7: Nella stessa directory, ricostruisci il tuo pacchetto (ignora gli avvisi che ne derivano)

sudo python setup.py build

Passaggio 8: Installa il pacchetto e il gioco è fatto.

sudo python setup.py install

Passaggio 9: Prova se funziona. Funziona se puoi importare MySQLdb.

python

>>> import MySQLdb

Passaggio 10: Se durante il tentativo di importazione viene visualizzato un errore che si lamenta che Library not loaded: libmysqlclient.18.dylib che termina con:Reason: image not found devi creare un collegamento simbolico aggiuntivo che è:

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

Dovresti quindi essere in grado di import MySQLdb senza errori.

Un ultimo inconveniente però è che se avvii Python dalla directory build otterrai questo errore:

/Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3:Avviso utente:il modulo _mysql è stato già importato da /Library/Python/2.5/ site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.pyc, ma XXXX/MySQL-python-1.2.3c1 viene aggiunto a sys.path

Questo è abbastanza facile per Google, ma per risparmiarti il ​​problema finirai per trovarti qui (o forse no... non è un URL particolarmente a prova di futuro) e capisci che devi cd .. fuori dalla directory build e l'errore dovrebbe scomparire.

Come ho scritto in alto, mi piacerebbe vedere questa risposta generalizzata, poiché ci sono numerose altre esperienze specifiche di questo orribile problema là fuori. Modifica via o fornisci la tua risposta migliore.