Ho scaricato e seguito le istruzioni di installazione per MySQL 5.5.8 (http://dev.mysql.com/downloads/mysql/) e per il plugin python MySQLdb. (http://sourceforge.net/projects/mysql-python/)Errore Python di MySQLdb - Mac 10.6
Quando tento di importare MySQLdb ad un terminale pitone, ottengo l'errore sotto:
Safira:~ yanigisawa$ python --version
Python 2.6.1
Safira:~ yanigisawa$ python -c "import MySQLdb"
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "build/bdist.macosx-10.6-universal/egg/MySQLdb/__init__.py", line 19, in <module>
File "build/bdist.macosx-10.6-universal/egg/_mysql.py", line 7, in <module>
File "build/bdist.macosx-10.6-universal/egg/_mysql.py", line 6, in __bootstrap__
ImportError: dlopen(/Users/yanigisawa/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so, 2): Library not loaded: libmysqlclient.16.dylib
Referenced from: /Users/yanigisawa/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so
Reason: image not found
Safira:~ yanigisawa$
ho trovato questione 4559699 su stack overflow, e seguito le istruzioni non:
Safira:~ yanigisawa$ echo $DYLD_LIBRARY_PATH
/usr/local/mysql/lib
Safira:~ yanigisawa$ ls -l /usr/local/mysql/lib
total 363224
-rwxr-xr-x 1 root wheel 3787328 Jan 18 19:41 libmysqlclient.16.dylib
-rw-r--r-- 1 root wheel 10035336 Dec 3 13:26 libmysqlclient.a
lrwxr-xr-x 1 root wheel 23 Jan 14 22:01 libmysqlclient.dylib -> libmysqlclient.16.dylib
lrwxr-xr-x 1 root wheel 20 Jan 14 22:01 libmysqlclient_r.16.dylib -> libmysqlclient.dylib
lrwxr-xr-x 1 root wheel 16 Jan 14 22:01 libmysqlclient_r.a -> libmysqlclient.a
lrwxr-xr-x 1 root wheel 20 Jan 14 22:01 libmysqlclient_r.dylib -> libmysqlclient.dylib
-rw-r--r-- 1 root wheel 88033760 Dec 3 13:22 libmysqld-debug.a
-rw-r--r-- 1 root wheel 84075304 Dec 3 13:26 libmysqld.a
-rw-r--r-- 1 root wheel 8472 Dec 3 13:26 libmysqlservices.a
drwxr-xr-x 13 root wheel 442 Dec 3 13:53 plugin
Safira:~ yanigisawa$ md5 /usr/local/mysql/lib/libmysqlclient.16.dylib
MD5 (/usr/local/mysql/lib/libmysqlclient.16.dylib) = b8a78a93183720021b9dbe9ddad57111
Safira:~ yanigisawa$
E dopo aver pulito tutti i file egg Python e ricostruito, ho ancora lo stesso errore. Poi ho trovato l'errore 59006 (http://bugs.mysql.com/bug.php?id=59006) in MySQL 5.5.8 che riguardava Mac 10.6. Ho provato il work-around elencato lì, pulito le uova e ricostruito, e sto ancora ricevendo questo errore.
Esiste un altro aggettivo per questo problema specifico per Python? Mi manca qualcos'altro?
EDIT: Aggiunta di uscita dai comandi otool:
Safira:~ yanigisawa$ otool -L /Users/yanigisawa/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so
/Users/yanigisawa/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so:
libmysqlclient.16.dylib (compatibility version 16.0.0, current version 16.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)
Safira:~ yanigisawa$ otool -DX /usr/local/mysql/lib/libmysqlclient.16.dylib
/usr/local/mysql/lib/libmysqlclient.16.dylib
Safira:~ yanigisawa$
Sono ancora nuovo su Mac OS. (circa 2 mesi in ora) Speravo di ottenere una "prova di fuoco" per così dire e di far funzionare tutto più o meno in modo manuale. Tuttavia, se non riesco a farlo funzionare, ricorrerò all'utilizzo dell'opzione Mac Port. Grazie per il suggerimento. – yanigisawa
Alla fine la soluzione MacPorts ha funzionato. Ha installato python 2.6.6 accanto alla mia installazione 2.6.1, e/usr/bin/python puntava ancora a 2.6.1, che ha causato lo stesso errore sopra riportato con i miei script apache cgi. Ho dovuto aggiungere un collegamento simbolico alla versione 2.6.6 e tutto ha funzionato correttamente. Grazie. – yanigisawa
Felice di ascoltare. Ma attenzione: in generale, è una pessima idea sovrascrivere qualsiasi cosa in/usr', oltre a/usr/local. Tutto questo è gestito da Apple come parte di OS X. Non sono sicuro se volevi dire che hai sovrascritto '/ usr/bin/python'. I modi migliori per gestire più versioni è modificare i file di avvio della shell per mettere '/ opt/local/Library/Frameworks/Python.framework/Versions/2.6/bin' nella parte anteriore di' $ PATH' o utilizzare un riferimento assoluto quando si fa riferimento a in Python, '/opt/local/bin/python2.6 '. –