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

macOS系统中调用Python mss库的mss.mss()时反复请求权限的问题

macOS系统中调用Python mss库的mss.mss()时反复请求权限的问题

嗨,我之前在macOS上用mss库做屏幕捕捉时,也碰到过每次调用mss.mss()就反复弹权限请求的烦人事,后来折腾出几个实用的解决办法,给你参考:

  • 复用mss实例,避免重复初始化
    你看你现在的代码,每次调用get_frame函数都会新建一个mss.mss()实例,这在macOS上会触发系统反复检查权限。其实只要把实例创建移到函数外面,复用同一个实例就行:

    import mss
    import cv2
    import numpy as np
    
    monitor_region = {
        "top": 810,
        "left": 1070,
        "width": 660,
        "height": 300
    }
    
    # 提前创建一次mss实例,全程复用
    sct = mss.mss()
    
    def get_frame(display_frame=False):
        # 直接用已创建好的sct实例抓帧
        img = sct.grab(monitor_region)
        # 这里可以继续你的cv2处理逻辑
        if display_frame:
            frame = np.array(img)
            cv2.imshow("Capture Window", frame)
            cv2.waitKey(1)
    

    这样只需要在第一次运行时授权一次,后面就不会再弹烦人的权限请求了。

  • 检查并重置系统屏幕录制权限
    打开macOS的「系统设置」,找到「隐私与安全性」,然后进入「屏幕录制」选项。在这里找到你正在使用的Python解释器(不管是系统自带的、Pyenv安装的还是虚拟环境里的),确保它的权限开关是打开的。
    要是已经开了还弹,先把开关关掉,重启你的Python程序,再重新打开权限——有时候系统的权限缓存会抽风,这么重置一下就正常了。

  • 注意虚拟环境的独立权限
    如果你用了虚拟环境(比如venv、conda这类),可别漏了给虚拟环境里的Python程序授权。系统会把虚拟环境的Python当成独立的进程,所以得在「屏幕录制」列表里找到对应虚拟环境下的Python可执行文件,把权限也打开才行。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 13:18:16