You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS运行Python应用报libssl.1.1.dylib加载失败如何解决

问题根因

执行brew upgrade后mysql-client被升级到8.0.29版本,该版本移除了自身lib目录下的OpenSSL动态库软链。你虚拟环境内安装的mysqlclient==1.4.6是升级前编译的C扩展,二进制文件硬编码了旧路径下libssl.1.1.dylib的加载地址,路径失效后直接触发动态库加载报错。

修复方案

以下三种方案任选其一即可,按推荐优先级排序:

  • 方案1:重新编译mysqlclient(长期稳定,推荐)
    先在当前激活的虚拟环境中配置编译依赖的环境变量,让安装过程能正确找到brew安装的openssl和mysql-client头文件、动态库:

    export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib -L/usr/local/opt/mysql-client/lib"
    export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include -I/usr/local/opt/mysql-client/include"
    

    清除旧版本安装缓存,重新从源码编译安装对应版本的mysqlclient:

    pip uninstall -y mysqlclient
    pip install --no-binary :all: mysqlclient==1.4.6
    

    安装完成后执行python -c "import MySQLdb",无输出即代表修复成功。

  • 方案2:手动创建软链(最快临时修复)
    系统中已经通过brew安装了openssl@1.1,直接把缺失的动态库软链到mysql-client的lib目录下即可:

    ln -s /usr/local/opt/openssl@1.1/lib/libssl.1.1.dylib /usr/local/opt/mysql-client/lib/
    ln -s /usr/local/opt/openssl@1.1/lib/libcrypto.1.1.dylib /usr/local/opt/mysql-client/lib/
    

    注意:该方案为临时修复,后续brew升级openssl或mysql-client时可能再次出现同类报错。

  • 方案3:切换为纯Python实现的PyMySQL驱动(无C依赖)
    你的依赖清单中已经声明了PyMySQL==0.10.1,该库是纯Python实现的MySQL驱动,完全兼容MySQLdb接口,不需要依赖本地C动态库。只需在项目入口文件的最顶部(所有MySQL相关导入语句之前)添加两行代码:

    import pymysql
    pymysql.install_as_MySQLdb()
    

    添加后无需修改任何SQLAlchemy、Flask-SQLAlchemy相关的业务代码,直接启动应用即可正常运行。


内容的提问来源于stack exchange,提问作者dina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 11:45:35