MacOS系统PyInstaller打包的应用打开提示已损坏无法打开如何解决?
MacOS PyInstaller打包应用报「已损坏无法打开」问题修复方案
以下方案按优先级排序尝试:
- 第一步:移除应用的隔离属性
绝大多数开启了任意来源权限仍报错的问题都是因为应用被打上了macOS的隔离扩展属性,执行以下命令即可清除:
注意替换命令中的路径为你自己的应用实际路径,路径结尾必须带上sudo xattr -rd com.apple.quarantine /Users/myself/Desktop/myApp/dist/MyApp.app.app后缀 - 第二步:验证签名有效性
先执行命令检查现有签名是否合法:
如果返回签名无效的报错,需要确认你在钥匙串创建的证书类型为「代码签名」,创建证书时类型选择错误会导致签名不被系统识别。codesign -vvv --deep --strict /Users/myself/Desktop/myApp/dist/MyApp.app
签名验证通过后,再执行命令检查Gatekeeper的准入结果:
正常返回结果会包含spctl -a -vvv -t exec /Users/myself/Desktop/myApp/dist/MyApp.appaccepted标识,若返回拒绝则需重新生成证书后再次签名。 - 第三步:调整PyInstaller打包参数
不要打包完成后再手动签名,在打包时直接传入签名参数,可避免手动签名导致的内部依赖签名失效问题,打包命令示例:
若你的应用需要申请特殊权限(如访问本地文件、摄像头等),还需要在打包时传入权限声明文件参数:pyinstaller --windowed --codesign "CertificateName" your_script.py--osx-entitlements entitlements.plist - 临时测试绕过方案
若只是自己本地测试使用,可以右键点击应用文件,选择「打开」,在弹出的风险提示框中再次点击「打开」即可直接启动应用,无需额外配置。 - M系列芯片Mac额外排查点
如果你是在Intel架构的Mac上打包的应用,在M系列芯片Mac上运行前可右键点击应用,选择「显示简介」,勾选「使用Rosetta打开」选项,或直接在M系列设备上重新打包生成原生架构的应用。
内容的提问来源于stack exchange,提问作者azal
相关产品推荐
相关产品推荐

