MacOS Big Sur下Python导入keyboard模块出现segmentation fault求助
MacOS Big Sur系统Python导入keyboard模块触发段错误解决方案
- 段错误触发原因:keyboard模块底层直接调用MacOS的IOKit框架获取键盘事件,当没有对应权限时,框架返回非法内存地址,Python解释器访问该地址就会触发段错误,属于底层兼容问题,并非上层代码语法错误导致。
- 权限配置修正:该段错误大多由MacOS系统隐私限制触发,键盘控制类操作必须获得辅助功能权限。操作路径:打开「系统偏好设置」-「安全性与隐私」-「隐私」选项卡,左侧列表选择「辅助功能」,点击左下角锁图标输入密码解锁后,将使用的终端应用(Terminal/iTerm2等)、当前Python解释器、代码编辑器/IDE全部添加到右侧列表并勾选,修改完成后重启终端再运行代码测试。
- 更换适配性更好的替代库:keyboard模块对MacOS系统的适配支持较差,高版本系统极易出现兼容崩溃问题,可更换为
pynput库实现相同功能,修改后的代码参考:
from pynput.keyboard import Controller, Key keyboard = Controller() # 等效于原代码的press_and_release('space') keyboard.press(Key.space) keyboard.release(Key.space)
- 调整模块与Python版本适配:如果必须使用keyboard模块,先卸载现有版本后安装开发适配版本,执行命令:
pip3 install --upgrade git+https://github.com/boppreh/keyboard.git,同时尽量使用Python 3.8~3.9版本运行,该模块在Python 3.10及以上版本的MacOS环境下存在大量未修复的适配Bug。 - 禁止随意使用sudo运行:sudo运行会切换用户环境,普通用户下配置好的权限在sudo环境下无法正常识别,反而会加剧权限冲突问题。
内容的提问来源于stack exchange,提问作者Kyle Tennison
相关产品推荐
相关产品推荐

