2014-08-30 88 views
5

我試圖使用python MySQLdb訪問我的MAMP服務器上的MySQL數據庫。MAMP Python-MySQLdb問題:libssl.1.0.0.dylib更改一次的路徑Python文件調用

當我最初試圖打電話與Python-SQL Python文件來訪問MAMP我的數據庫中,我得到了關於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 

所以我通過改變固定它在一定程度上image not found錯誤因爲我想在執行的Python文件中的每個文件夾進行使用 export DYLD_LIBRARY_PATH=/Users/username/anaconda/lib/:$DYLD_LIBRARY_PATH,但它有libssl.1.0.0.dylib路徑。

所以,當我試圖通過PHP我的甲基苯丙胺的網頁出現錯誤再次執行Python的文件,這次我不能使用我的臨時修復來掩蓋它。

我試圖修復它進一步利用install_name_tool改變假庫的位置/Users/username/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.5-x86_64.egg-tmp/_mysql.so到它實際存儲在/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 

這樣做我用otool -L看到我所的狀況進行評估後更改並且結果表明文件路徑已將肯定更改爲正確的位置。

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) 

然而,當我再次運行Python文件,我得到image not found錯誤。在再次運行otool -L時,結果顯示文件路徑已經恢復。

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

所以直到我跑了Python文件其更改爲正確的位置和它再次回到了以前。

這是怎麼發生的?有什麼我可以做,使它保持我已經改變了?

回答

6

所以我發現我應該使用/usr/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

我創建了一個符號鏈接到libssl.1.0.0.dylib應該,(/Users/$USERNAME/anaconda/lib/對我來說)引用,使用

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

,一旦這樣做了,同爲libcrypto.1.0.0.dylib,因爲它扔了同樣的錯誤。在/usr/bin這兩個

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

作爲一個側面說明列出文件時被列爲libss.dyliblibcrypto.dylib

+2

試圖在Mac OS X上安裝https://github.com/cvondrick/vatic,我也遇到過這個問題。這裏的解決方案非常完美。 – chris838 2015-03-18 15:16:32

+2

如果使用OSX El Capitan,默認情況下/ usr/lib被寫保護(即使在sudo中)。要關閉此功能,請按照[這些](http://apple.stackexchange.com/questions/208478/how-do-i-disable-system-integrity-protection-sip-aka-rootless-on-os-x- 10-11)步驟 – 2015-12-11 00:47:34