2014-08-30 4 views
5

Sto provando a usare python MySQLdb per accedere al mio database MySQL sul mio server MAMP.MAMP Python-MySQLdb issue: Path to libssl.1.0.0.dylib cambiando una volta il file Python chiamato

Quando ho inizialmente provato a chiamare un file Python con python-SQL per accedere al mio database su MAMP ho ottenuto l'errore image not found per quanto riguarda la biblioteca libssl.1.0.0.dylib

Traceback (most recent call last): 
    File "desktopsql.py", line 3, in <module> 
    import _mysql as ms 
    File "build/bdist.macosx-10.5-x86_64/egg/_mysql.py", line 7, in <module> 
    File "build/bdist.macosx-10.5-x86_64/egg/_mysql.py", line 6, in __bootstrap__ 

    ImportError: 
    dlopen(/Users/username/.python-eggs/MySQL_python-1.2.5-py2.7-macosx- 
    10.5-x86_64.egg-tmp/_mysql.so, 2): 

    Library not loaded: libssl.1.0.0.dylib 

    Referenced from: 
    /Users/username/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.5-x86_64.egg-tmp/_mysql.so 

    Reason: image not found 

Così ho risolto il tutto in una certa misura cambiando la libssl.1.0.0.dylib percorso utilizzando export DYLD_LIBRARY_PATH=/Users/username/anaconda/lib/:$DYLD_LIBRARY_PATH, ma deve essere fatto per ogni cartella desidero eseguire il file Python in.

Così, quando provo a eseguire il file di Python attraverso PHP sulla mia pagina web MAMP ottengo l'errore di nuovo, e Non posso usare la mia correzione improvvisata questa volta per coprirlo.

ho cercato di risolvere il problema ulteriormente usando install_name_tool per modificare la posizione falsa libreria /Users/username/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.5-x86_64.egg-tmp/_mysql.so a dove è effettivamente memorizzata nei /Users/username/anaconda/lib/

sudo install_name_tool -change 
libssl.1.0.0.dylib 
/Users/username/anaconda/lib/libssl.1.0.0.dylib 
/Users/username/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.5-x86_64.egg-tmp/_mysql.so 

Dopo questo modo io uso otool -L per vedere lo stato di quello che ho modificato e il risultato indica che il percorso file ha sicuramente cambiato nella posizione corretta.

otool -L 
/Users/username/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.5-x86_64.egg-tmp/_mysql.so 

    /Users/username/anaconda/lib/libssl.1.0.0.dylib 
    (compatibility version 1.0.0, current version 1.0.0) 

Tuttavia quando si esegue nuovamente il file python, ottengo l'errore image not found. Dopo aver eseguito otool -L di nuovo il risultato mostra che il percorso del file è stato ripristinato nuovamente.

/Users/username/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.5-x86_64.egg-tmp/_mysql.so: 

    libssl.1.0.0.dylib 
    (compatibility version 1.0.0, current version 1.0.0) 

Quindi passa alla posizione corretta fino a quando eseguo il file python ed è tornato di nuovo a ciò che era prima.

Perché sta succedendo? C'è qualcosa che posso fare per mantenere ciò che ho cambiato?

risposta

6

Così ho scoperto che dovrei lavorare con il file libssl.1.0.0.dylib in /usr/lib, non il file menzionato dall'errore, che era Users/$USERNAME/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.5-x86_64.egg-tmp/_mysql.so nel mio caso.

ho creato un link simbolico a cui libssl.1.0.0.dylib dovrebbe essere fatto riferimento da, (/Users/$USERNAME/anaconda/lib/ per me), utilizzando

sudo ln -s /Users/$USERNAME/anaconda/lib/libssl.1.0.0.dylib /usr/lib/libssl.1.0.0.dylib

e, una volta fatto, lo stesso per libcrypto.1.0.0.dylib, in quanto ha gettato lo stesso errore.

sudo ln -s /Users/$USERNAME/anaconda/lib/libcrypto.1.0.0.dylib /usr/lib/libcrypto.1.0.0.dylib

Come nota a margine, quando l'elenco dei file in /usr/bin questi due sono elencati come libss.dylib e libcrypto.dylib.

+2

Cercando di installare https://github.com/cvondrick/vatic su Mac OS X e ho riscontrato anche questo problema. La soluzione qui ha funzionato perfettamente. – chris838

+2

Se si utilizza OSX El Capitan,/usr/lib è protetto da scrittura di default (anche in sudo). Per disattivarlo, segui [questi] (http://apple.stackexchange.com/questions/208478/how-do-i-disable-system-integrity-protection-sip-aka-rootless-on-os-x- 10-11) passi –