【问题标题】:OSError: [Errno 19] Failed to open the uinput device: No such deviceOSError: [Errno 19] 无法打开 uinput 设备:没有这样的设备
【发布时间】:2018-07-16 09:26:16
【问题描述】:

我对 raspberry 和 Linux 还是很陌生。我正在尝试使用以下代码在 Raspbian(r Pi 3 B)上运行 python 库 uinput 的基本示例:

import uinput

device = uinput.Device([
        uinput.BTN_LEFT,
        uinput.BTN_RIGHT,
        uinput.REL_X,
        uinput.REL_Y,
        ])

for i in range(20):
    device.emit(uinput.REL_X, 5)
    device.emit(uinput.REL_Y, 5)

我得到错误:

Traceback(最近一次调用最后一次):

文件“/home/pi/Desktop/t1.py”,第 7 行,在 uinput.REL_Y, init 中的文件“/home/pi/.local/lib/python3.5/site-packages/uinput/init.py”,第 178 行 self.uinput_fd = fd 或 fdopen() fdopen 中的文件“/home/pi/.local/lib/python3.5/site-packages/uinput/__init.py”,第 84 行 返回 _libsuinput.suinput_open() _open_error_handler 中的文件“/home/pi/.local/lib/python3.5/site-packages/uinput/init.py”,第 70 行 引发 OSError(code, msg)

OSError: [Errno 19] 无法打开 uinput 设备:没有这样的设备 怎么了?我需要更改什么以及在哪里更改?

【问题讨论】:

  • 你能发布完整的回溯吗?
  • 你不应该open设备吗?我的意思是with Device as device

标签: python linux raspbian uinput


【解决方案1】:

uinput 驱动模块加载了吗?

试试:

$ lsmod | grep uinput

可能不会显示任何内容,这意味着未加载驱动程序。尝试加载它:

$ modprobe uinput

然后试试你的 Python 代码。如果你没有以 root 权限运行你的代码,那么你可能会得到一个PermissionError,因为/dev/uinput 设备文件的访问权限。

【讨论】:

  • 你是对的,你的第一个命令什么也没打印。我必须使用 sudo 和 python 代码运行的第二个命令然后给出了你所说的错误。
  • 然后它开始抛出“ImportError: No module named 'uinput'”。
  • 如果我在没有 sudo 的情况下运行脚本并且在导入后立即插入行 print(uinput) 它会打印 <module 'uinput' from '/home/pi/.local/lib/python3.5/site-packages/uinput/__init__.py'> 我猜这是正确的
  • 您使用的是虚拟环境吗?我对uinput 不是很熟悉,所以我可能是错的,但由于它涉及设备驱动程序,我希望它只能由特权用户使用。
  • 所以我使用 pip3 添加它并设法运行该示例代码(必须 import time 库并添加到循环行 time.sleep(0.5) 以查看发生的任何事情,但这已经是另一回事了)。非常感谢您的快速帮助!
猜你喜欢
  • 1970-01-01
  • 2015-07-25
  • 1970-01-01
  • 2017-07-12
  • 1970-01-01
  • 2015-12-06
  • 2022-01-12
  • 1970-01-01
  • 2017-10-25
相关资源
最近更新 更多