我的 mac 上的 python mysqldb 错误:库未加载:@rpath/libmysqlclient.21.dylib

问题描述 投票:0回答:3
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
,但无法解决它

python mysql mysql-python
3个回答
3
投票

因此,据我所知,@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


0
投票

我做了与 Sam 类似的事情,并且能够使其发挥作用。

我只是复制了位于

libmysqlclient.21.dylib
中的最新安装的 MySQL 8.0.13 中的
/usr/local/mysql/lib
文件,并将该副本以相同名称移至
/usr/lib

您需要暂时禁用 Mac 上的安全完整性保护,但要执行此操作,因为如果不禁用它,您将无法或无法更改

/usr/lib
中任何内容的权限。您可以通过启动到恢复系统,单击顶部菜单上的实用程序,然后打开终端并在终端中输入
csrutil disable
来完成此操作。完成此操作后,请记住重新打开安全完整性保护!与上述过程的唯一区别是您运行
csrutil enable

您可以在此处了解有关如何禁用和启用 macOS 安全完整性保护的更多信息。


0
投票

这也适用于 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!!

© www.soinside.com 2019 - 2024. All rights reserved.