如何在Ubuntu系统中运行需要root权限的Python文件?
Ubuntu 20.04 下 Python keyboard 模块权限报错解决方案
keyboard 模块需要读写系统输入设备实现功能,默认普通用户无对应访问权限,直接用 root/sudo 报错通常是虚拟环境路径适配问题或 uinput 设备权限不足,可按以下步骤解决:
方案1:配置永久权限(无需每次运行加sudo)
- 将当前用户加入
input组,获取输入设备访问权限:sudo usermod -aG input $USER - 配置uinput设备访问规则,创建udev规则文件:
echo 'KERNEL=="uinput", MODE="0660", GROUP="input", OPTIONS+="static_node=uinput"' | sudo tee /etc/udev/rules.d/99-uinput.rules - 重新加载udev规则让配置生效:
sudo udevadm control --reload-rules && sudo udevadm trigger - 注销当前用户重新登录,或直接重启系统,配置即可生效。
方案2:临时测试直接用sudo运行的适配方法
如果仅临时测试代码不想改系统权限,需要注意虚拟环境的适配问题:
- 若你使用了Python虚拟环境,直接执行
sudo python xxx.py会调用系统全局Python而非虚拟环境,若keyboard模块仅安装在虚拟环境中就会报权限/模块不存在错误,需要指定虚拟环境的Python路径运行:sudo /path/to/你的虚拟环境目录/bin/python 你的脚本文件名.py - 若没有使用虚拟环境,直接执行以下命令即可运行:
sudo python3 你的脚本文件名.py
额外注意事项
- 如果你手动切换过Wayland显示服务器,全局输入控制类库会被系统限制,Ubuntu 20.04默认使用Xorg,如有切换可以在登录界面点击右下角齿轮,选择「Ubuntu on Xorg」登录后再运行代码。
- 配置完成后可执行
groups命令,确认输出中包含input组,说明用户组配置已生效。
配置完成后运行以下测试代码即可验证:
import keyboard keyboard.write("Hello")
内容的提问来源于stack exchange,提问作者JerryWill321
相关产品推荐
相关产品推荐

