首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ImportError:无法导入名称'InputDevice‘- Evdev

ImportError:无法导入名称'InputDevice‘- Evdev
EN

Stack Overflow用户
提问于 2019-02-24 04:03:27
回答 2查看 1.3K关注 0票数 2

我用sudo -H pip install evdev在我的Raspberry Pi 3 B+上安装了evdev。安装过程正常,我运行python /usr/local/lib/python2.7/dist-packages/evdev/evtest.py查看它是否正常工作。一切都很好。

问题是,在执行此Python代码时:

代码语言:javascript
复制
from evdev import InputDevice, categorize, ecodes
gamepad = InputDevice('/dev/input/js0')
print(gamepad)
for event in gamepad.read_loop():
  print(categorize(event)

我得到了这个错误的答案:

代码语言:javascript
复制
Traceback (most recent call last):
  File "evdev1.py", line 1, in <module>
    from evdev import InputDevice, categorize, ecodes
  File "/home/pi/Desktop/evdev.py", line 2, in <module>
    from evdev import InputDevice, categorize, ecodes
ImportError: cannot import name 'InputDevice'

但是,当我在python shell上执行from evdev import InputDevice, categorize, ecodes时,它似乎可以工作。我做错了什么?我该如何解决这个问题呢?

谢天谢地,大卫。

EN

回答 2

Stack Overflow用户

发布于 2019-12-11 17:28:49

它写在您的错误回溯中:您的工作目录中有一个名为evdev1.py的文件和一个evdev.py文件。evdev1.py中的from evdev import ...将尝试从文件"/home/pi/Desktop/evdev.py"导入-该文件也是一个模块。

这就是从另一个工作目录中调用from evdev import ...的原因。

票数 1
EN

Stack Overflow用户

发布于 2019-06-03 10:16:35

这有点令人困惑,但在linux中访问游戏手柄/操纵杆的方法有旧的和新的。较旧的joydev将设备显示为"js*“,而较新的evdev将设备显示为"event*”

如果使用evdev,则需要使用以"/dev/input/ event“开头的事件路径,而不是以"/dev/input/js”开头的事件路径。

按如下方式标识设备:

代码语言:javascript
复制
import evdev
devices = [evdev.InputDevice(path) for path in evdev.list_devices()]
for device in devices:
    print(device.path, device.name)

或者,如果只有一个,就使用出现的第一个。

代码语言:javascript
复制
import evdev
gamepad = evdev.InputDevice( evdev.list_devices()[0] )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54845670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档