OSError: [Errno 19] 无法打开 uinput 设备:没有这样的设备
Posted
技术标签:
【中文标题】OSError: [Errno 19] 无法打开 uinput 设备:没有这样的设备【英文标题】:OSError: [Errno 19] Failed to open the uinput device: No such device 【发布时间】: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)
怎么了?我需要更改什么以及在哪里更改?
【问题讨论】:
你能发布完整的回溯吗? 你不应该open
设备吗?我的意思是with Device as device
【参考方案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)
以查看发生的任何事情,但这已经是另一回事了)。非常感谢您的快速帮助!以上是关于OSError: [Errno 19] 无法打开 uinput 设备:没有这样的设备的主要内容,如果未能解决你的问题,请参考以下文章
OSError:[Errno 24]使用Nibabel打开的文件过多
Gunicorn 因 OSError 失败:[Errno 107] 传输端点未连接
socketserver OSError:[Errno 98] Address already in use
当我使用pycharm运行代码时,错误“OSError:[Errno 49]无法分配请求的地址”。