2014-08-30 5 views
5

Ich versuche mit Python MySQLdb auf meine MySQL-Datenbank auf meinem MAMP-Server zuzugreifen.MAMP Python-MySQLdb Problem: Pfad zu libssl.1.0.0.dylib ändert sich einmal Python-Datei mit dem Namen

Als ich zunächst versucht, eine Python-Datei mit Python-SQL zu nennen meine Datenbank auf MAMP zugreifen bekam ich die image not found Fehler in Bezug auf die libssl.1.0.0.dylib Bibliothek

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 

Also habe ich es zu einem gewissen Grad fixiert die durch Veränderung libssl.1.0.0.dylib Pfad export DYLD_LIBRARY_PATH=/Users/username/anaconda/lib/:$DYLD_LIBRARY_PATH, aber es muss für jeden Ordner getan ich möchte in die Python-Datei auszuführen.

Also, wenn ich versuche, die Python-Datei über PHP auf meiner MAMP Webseite auszuführen erhalte ich den Fehler wieder, und Ich kann meine behelfsmäßige Reparatur dieses Mal nicht verwenden, um es zu vertuschen.

Ich habe versucht, es zu beheben weiter install_name_tool mit der falschen Bibliothek Speicherort ändern /Users/username/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.5-x86_64.egg-tmp/_mysql.so, wo es tatsächlich in /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 

Nachdem ich mich otool -L verwenden, so gespeichert wird, um den Status zu sehen, was ich habe geändert und das Ergebnis besagt, dass der Dateipfad hat sicherlich an den richtigen Speicherort geändert.

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) 

jedoch, wenn ich die Python-Datei erneut ausführen, bekomme ich die image not found Fehler. Beim erneuten Ausführen von otool -L zeigt das Ergebnis, dass der Dateipfad wieder zurückgesetzt wurde.

/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) 

So wechselt er an die richtige Stelle, bis ich die Python-Datei ausführen und es ist wieder zu dem, was es vorher war.

Warum passiert das? Gibt es etwas, was ich tun kann, damit es so bleibt, wie ich es geändert habe?

Antwort

6

So entdeckte ich, dass ich mit der libssl.1.0.0.dylib Datei in /usr/lib arbeiten sollte, nicht die Datei, die durch den Fehler erwähnt wurde, die in meinem Fall Users/$USERNAME/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.5-x86_64.egg-tmp/_mysql.so war.

habe ich einen symbolischen Link, wo libssl.1.0.0.dylib sollte, verwiesen werden (/Users/$USERNAME/anaconda/lib/ für mich),

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

mit und einmal, dass das gleiche für libcrypto.1.0.0.dylib getan hat, da sie die gleichen Fehler warf.

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

Als Randbemerkung, wenn in /usr/bin diese beiden Dateien Auflistung als libss.dylib und libcrypto.dylib aufgeführt.

+2

Versucht, https://github.com/cvondrick/vatic auf Mac OS X zu installieren, und ich stieß auch auf dieses Problem. Die Lösung hier hat perfekt funktioniert. – chris838

+2

Bei Verwendung von OSX El Capitan ist/usr/lib standardmäßig schreibgeschützt (selbst in sudo). Um dies zu deaktivieren, folgen Sie [diese] (http://apple.stackexchange.com/questions/208478/how-do-i-disable-system-integrity-protection-sip-aka-rootless-on-o-s-x- 10-11) Schritte –