![](/img/trans.png)
[英]Getting "Library not loaded: libssl.1.0.0.dylib", "Reason: image not found" with flask_mysqldb
[英]MAMP Python-MySQLdb issue: Path to libssl.1.0.0.dylib changing once Python file called
我正在嘗試使用python MySQLdb訪問我的MAMP服務器上的MySQL數據庫。
當我最初嘗試使用python-sql調用Python文件來訪問我在MAMP上的數據庫時,我得到了關於libssl.1.0.0.dylib
庫的image not found
錯誤
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
所以我通過使用export DYLD_LIBRARY_PATH=/Users/username/anaconda/lib/:$DYLD_LIBRARY_PATH
更改libssl.1.0.0.dylib
路徑在某種程度上修復了它,但必須對我希望執行的每個文件夾執行此操作。 Python文件。
因此,當我嘗試在我的MAMP網頁上通過PHP
執行Python文件時,我再次收到錯誤,這次我無法使用我的臨時修復來掩蓋它。
我嘗試使用install_name_tool
進一步修復它,將false庫位置/Users/username/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.5-x86_64.egg-tmp/_mysql.so
為where它實際上存儲在/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文件並再次返回到之前的狀態。
為什么會這樣? 有什么我可以做的,以保持我改變它的東西?
所以我發現我應該使用/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
在我的例子中, 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/
for me),使用
sudo ln -s /Users/$USERNAME/anaconda/lib/libssl.1.0.0.dylib /usr/lib/libssl.1.0.0.dylib
並且,一旦完成,對於libcrypto.1.0.0.dylib
,因為它拋出了相同的錯誤。
sudo ln -s /Users/$USERNAME/anaconda/lib/libcrypto.1.0.0.dylib /usr/lib/libcrypto.1.0.0.dylib
在列出/usr/bin
的文件時,請注意這兩個列為libss.dylib
和libcrypto.dylib
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.