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

Sonoma系统更新后VS Code终端出现Python警告及GUI崩溃问题

解决Mac Sonoma系统下摄像头项目的警告与GUI崩溃问题

针对两个警告的修复步骤

1. 修复"Secure coding is not enabled for restorable state"警告

该警告源于应用未启用安全编码以支持状态恢复,若使用PyQt/PySide这类Qt框架,需自定义应用类并实现对应方法:

# PyQt5示例
from PyQt5.QtWidgets import QApplication

class MyApp(QApplication):
    def applicationSupportsSecureRestorableState(self):
        return True

if __name__ == "__main__":
    app = MyApp([])
    # 后续GUI初始化代码

PySide6写法类似,仅需替换对应导入模块即可,此方法会让系统确认应用支持安全状态恢复,消除该警告。

2. 修复"AVCaptureDeviceTypeExternal is deprecated for Continuity Cameras"警告

Sonoma对Continuity Camera的API进行了更新,需替换过时标识并添加权限配置:

  • 修改设备检测代码:若代码中用AVCaptureDeviceTypeExternal识别Continuity Camera,替换为AVCaptureDeviceTypeContinuityCamera。以PyObjC调用AVFoundation为例:
import objc
from AVFoundation import AVCaptureDevice

# 替换后的设备获取方式
continuity_devices = AVCaptureDevice.devicesWithDeviceType_mediaType_position_(
    objc.lookUpClass("AVCaptureDeviceTypeContinuityCamera"),
    objc.lookUpClass("AVMediaTypeVideo"),
    objc.lookUpClass("AVCaptureDevicePositionUnspecified")
)

若使用OpenCV等库,需升级到适配Sonoma的版本,或通过PyObjC直接调用AVFoundation获取设备。

  • 添加Info.plist配置:若项目打包为应用,需在Info.plist中添加:
<key>NSCameraUseContinuityCameraDeviceType</key>
<true/>

直接运行脚本的场景,可创建临时plist文件,或通过PyObjC启动时设置该权限(部分场景需打包为App生效)。

解决GUI崩溃问题

GUI崩溃多因过时API与Sonoma不兼容导致,完成上述警告修复后,还需:

  • 升级所用GUI框架(如PyQt/PySide、OpenCV等)至最新版本,确保适配Mac Sonoma。
  • 检查实时滤镜代码逻辑,替换依赖过时摄像头API的调用为兼容Sonoma的写法。

内容的提问来源于stack exchange,提问作者I love chocolate

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 14:24:51