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

M3 Mac(macOS 15)下SQLite扩展dylib代码签名加载失败求助

解决macOS 15(M3 Mac)上SQLite扩展加载被系统策略限制的问题

你的问题核心是macOS 15的安全策略对自签名代码的信任要求更严格,同时签名流程可能存在疏漏,以下是具体修复步骤:

1. 修正自签名证书的信任配置

  • 打开「钥匙串访问」,找到你创建的SGH_sqlite_extensions证书:
    • 确认证书类型为代码签名(创建时需在「证书助理」中选择「代码签名」模板)。
    • 将证书从「登录」钥匙串移至「系统」钥匙串(仅系统级信任的证书才会被spctl认可)。
    • 右键证书→「显示简介」→「信任」,把「代码签名」选项设为「始终信任」。

2. 重新规范签名SQLite扩展

使用符合macOS 15安全要求的签名命令,启用Hardened Runtime:

codesign -s "SGH_sqlite_extensions" --force --options runtime /usr/local/lib/sqlite/math.dylib
  • --force:覆盖原有无效签名
  • --options runtime:启用系统要求的Hardened Runtime安全机制

3. 验证签名有效性

用指定上下文的spctl命令重新检查,确保系统认可签名:

spctl -a -vv --context context:primary-signature /usr/local/lib/sqlite/math.dylib

若输出显示accepted,则签名已通过系统策略校验。

4. 确保Python的SQLite启用扩展加载

在Python脚本中必须先开启扩展加载权限:

import sqlite3

conn = sqlite3.connect('your_database.db')
conn.enable_load_extension(True)  # 关键步骤:开启扩展加载功能
conn.load_extension('/usr/local/lib/sqlite/math.dylib')
# 执行后续数据库操作
conn.close()

额外排查点

  • 若spctl仍拒绝,检查证书是否过期,或创建时是否正确勾选「代码签名」用途。
  • 确认/usr/local/lib/sqlite目录权限正常,当前用户拥有读写权限。
  • macOS 15的SIP机制不影响/usr/local目录,无需关闭SIP。

内容的提问来源于stack exchange,提问作者Steve Gooberman-Hill

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 22:54:59