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

Ubuntu下同时使用Pyautogui与Keyboard模块的权限冲突问题

解决Pyautogui与Keyboard模块的权限冲突问题

针对Linux环境下两个模块的权限矛盾,提供两种可行方案:

方案一:给root用户添加X显示授权

当用sudo运行脚本时,Pyautogui无法连接X显示是因为root没有当前用户的X授权,执行以下步骤解决:

  1. 普通用户终端执行:
    xauth list $DISPLAY
    
    会得到类似your-hostname:1 MIT-MAGIC-COOKIE-1 1234abcd5678efgh的授权记录
  2. 将该记录导入root的授权列表:
    sudo xauth add $(xauth list $DISPLAY)
    
  3. 现在用sudo python3 your_script.py运行脚本,两个模块即可正常工作。

方案二:用pynput替代Keyboard模块

Keyboard的.is_pressed()方法需要root权限,而pynput库的键盘功能无需root,可直接在普通用户环境下运行,同时兼容Pyautogui:
示例代码:

import pyautogui
from pynput.keyboard import Key

# 检测单个按键是否按下(比如ESC键)
from pynput.keyboard import Controller
keyboard = Controller()
is_esc_pressed = keyboard.is_pressed(Key.esc)

# 或者监听按键事件
from pynput.keyboard import Listener
def on_key_press(key):
    if key == Key.space:
        print("空格被按下")
    elif key == Key.esc:
        return False  # 停止监听

with Listener(on_press=on_key_press) as listener:
    listener.join()

内容的提问来源于stack exchange,提问作者Varsima

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:05:26