import MySQLdb
导致
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "build/bdist.macosx-10.13-intel/egg/MySQLdb/__init__.py", line 19, in <module>
File "build/bdist.macosx-10.13-intel/egg/_mysql.py", line 7, in <module>
File "build/bdist.macosx-10.13-intel/egg/_mysql.py", line 6, in __bootstrap__
ImportError: dlopen(/Users/simon/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.13-intel.egg-tmp/_mysql.so, 2): Library not loaded: @rpath/libmysqlclient.21.dylib
Referenced from: /Users/simon/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.13-intel.egg-tmp/_mysql.so
Reason: image not found`
我尝试构建并安装mysql-python,并且
ln -s /usr/local/mysql/lib/libmysqlclient.18.dyli
,但无法解决它
因此,据我所知,@rpath 尝试解析为 /usr/lib,但无法写入。我通过爬行此网站解决了这个问题。很多都是中文的,但我得到的是命令 sudo
install_name_tool -change @rpath/libmysqlclient.21.dylib /usr/local/mysql/lib/libmysqlclient.21.dylib /Users/[username]/.pyenv/versions/career/lib/python2.7/site-packages/_mysql.so
我做了与 Sam 类似的事情,并且能够使其发挥作用。
我只是复制了位于
libmysqlclient.21.dylib
中的最新安装的 MySQL 8.0.13 中的 /usr/local/mysql/lib
文件,并将该副本以相同名称移至 /usr/lib
。
您需要暂时禁用 Mac 上的安全完整性保护,但要执行此操作,因为如果不禁用它,您将无法或无法更改
/usr/lib
中任何内容的权限。您可以通过启动到恢复系统,单击顶部菜单上的实用程序,然后打开终端并在终端中输入 csrutil disable
来完成此操作。完成此操作后,请记住重新打开安全完整性保护!与上述过程的唯一区别是您运行 csrutil enable
。
您可以在此处了解有关如何禁用和启用 macOS 安全完整性保护的更多信息。
这也适用于 rustc,我可以确认该解决方案
DYLD_LIBRARY_PATH=/usr/lib:<path_to_where_libmysqlclient_is>
在 Mac Sonoma 14 上为我工作。 我有 libmysqlclient.23.dylib ,编译器锁定了 libmysqlclient.20.dylib ,所以我刚刚创建了一个指向 libmysqlclient.23.dylib 的符号链接!
希望这对某人有帮助! 感谢@Ray Kiddy!!