Mac系统下VSCode运行Pyautogui可读取鼠标位置但无法移动鼠标如何解决
故障原因
- 权限继承异常:macOS的辅助功能权限为进程粒度授权,仅给VSCode本体授权无法保证VSCode启动的Python子进程继承到模拟输入类操作的权限,尤其是通过VSCode内置终端运行代码时,内置终端的进程权限与VSCode主进程相互隔离。
- 鼠标坐标读取无高权限要求:关闭辅助功能权限仍可读取鼠标位置是正常现象,macOS仅对模拟输入类操作(鼠标移动、点击、键盘输入等)做权限校验,读取鼠标坐标的权限要求极低,无需额外授权。
- 第三方软件拦截:杀毒、防火墙、权限管理类第三方软件会默认拦截非系统来源的模拟输入请求,即使系统层面开启权限也会被拦截。
解决方法
- 给Python解释器单独授权
首先激活你使用的Python环境(虚拟环境需先激活),在终端执行which python3获取对应Python二进制文件的绝对路径。打开「系统设置→隐私与安全性→辅助功能」,点击+号按路径找到对应的Python二进制文件,添加到授权列表并开启开关。 - 验证基础功能是否正常
不要使用VSCode内置终端,直接打开系统自带的Terminal.app,激活Python环境后运行测试代码:
如果此时可以正常控制鼠标移动,说明问题出在VSCode内置终端的权限配置,继续执行后续步骤。import pyautogui pyautogui.moveTo(0,0,duration=2) - 修复VSCode内置终端权限
打开「系统设置→隐私与安全性→辅助功能」,检查列表中是否添加了VSCode的内置终端进程、以及你VSCode默认使用的shell(如zsh、bash)的授权,未添加则手动补充并开启开关。如果仍未生效,再打开「系统设置→隐私与安全性→输入监控」,将VSCode添加到授权列表。 - 排除第三方软件干扰
临时退出所有第三方杀毒、防火墙、权限管理类软件后再次测试,确认是否为这类软件拦截导致的故障。 - 临时替代方案
如果上述步骤均无法解决VSCode内置终端的权限问题,运行pyautogui相关代码时直接使用系统终端执行即可规避权限继承异常问题。
内容的提问来源于stack exchange,提问作者joba
相关产品推荐
相关产品推荐

