Pyjnius+Sikuli在MacOS实例化Screen类时无响应问题求助
MacOS Monterey下Pyjnius实例化Sikuli Screen类卡顿无响应的解决办法
问题场景
在MacOS Monterey系统中,Python3.9环境已安装Pyjnius、CLASSPATH也添加了SikuliAPI 2.0.5 jar包,运行以下代码时,到实例化Screen类这一步就卡住,无任何报错信息,但相同代码在Windows系统可正常运行:
from jnius import autoclass # 这步正常执行 Screen = autoclass('org.sikuli.script.Screen') # 这步也正常 screen = Screen() # 卡在此处无响应,无报错
解决办法
为Python运行环境开启辅助功能权限
MacOS的安全机制会限制程序获取屏幕内容,必须给终端或IDE开启对应权限:- 打开「系统偏好设置」→「安全性与隐私」→「隐私」标签页
- 找到「辅助功能」选项,点击左下角锁图标解锁设置
- 将你用来运行代码的终端(如Terminal、iTerm)或IDE(如PyCharm)添加到列表中,勾选对应权限
- 重启终端/IDE后重新运行代码
降级SikuliAPI版本
SikuliAPI 2.0.5可能与MacOS Monterey存在兼容性问题,尝试降级至2.0.4版本:- 将CLASSPATH中的SikuliAPI 2.0.5 jar包替换为2.0.4版本
- 清理Python缓存后重新执行代码
手动指定JVM初始化参数
给Pyjnius的JVM添加必要参数,确保Sikuli能正常调用系统资源:
在导入autoclass前先初始化JVM:from jnius import init_jvm, autoclass # 替换为你实际的SikuliAPI jar包路径 init_jvm( classpath=['/Users/xxx/Documents/sikuliapi-2.0.5.jar'], options=['-Xmx512m', '-Djava.awt.headless=false'] ) Screen = autoclass('org.sikuli.script.Screen') screen = Screen()改用SikuliX官方Python绑定
放弃Pyjnius,直接使用官方提供的SikuliX Python绑定:- 执行
pip install sikulixapi完成安装 - 改写代码为:
from sikulix import Screen screen = Screen()- 执行
内容的提问来源于stack exchange,提问作者SimpleGuy
相关产品推荐
相关产品推荐

