Ano*_*use 5 python mysql mamp python-2.7
我正在尝试使用python MySQLdb访问我的MAMP服务器上的MySQL数据库.
当我最初尝试使用python-sql调用Python文件来访问我在MAMP上的数据库时,我得到了image not found关于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
Run Code Online (Sandbox Code Playgroud)
因此,我通过更改libssl.1.0.0.dylib路径使用
来修复它export DYLD_LIBRARY_PATH=/Users/username/anaconda/lib/:$DYLD_LIBRARY_PATH,但必须对我希望执行Python文件的每个文件夹执行此操作.
因此,当我尝试PHP在我的MAMP网页上执行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
Run Code Online (Sandbox Code Playgroud)
在这样做之后,我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)
Run Code Online (Sandbox Code Playgroud)
但是,当我再次运行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)
Run Code Online (Sandbox Code Playgroud)
因此它会更改到正确的位置,直到我运行python文件并再次返回到之前的状态.
为什么会这样?有什么我可以做的,以保持我改变它的东西?
所以我发现我应该使用该libssl.1.0.0.dylib文件/usr/lib,而不是错误提到的文件,这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,因为它抛出相同的错误.
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.