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
相关产品推荐
相关产品推荐

