Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 导入错误:无法导入名称';输入设备';-埃夫德夫_Python_Joystick_Gamepad_Evdev - Fatal编程技术网

Python 导入错误:无法导入名称';输入设备';-埃夫德夫

Python 导入错误:无法导入名称';输入设备';-埃夫德夫,python,joystick,gamepad,evdev,Python,Joystick,Gamepad,Evdev,我用sudo-H pip安装evdev在我的Raspberry Pi 3 B+上安装了evdev。 安装正常,我运行了python/usr/local/lib/python2.7/dist-packages/evdev/evtest.py,查看它是否正常工作。一切都很好 问题在于,在执行此Python代码时: from evdev import InputDevice, categorize, ecodes gamepad = InputDevice('/dev/input/js0') prin

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

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

from evdev import InputDevice, categorize, ecodes
gamepad = InputDevice('/dev/input/js0')
print(gamepad)
for event in gamepad.read_loop():
  print(categorize(event)
我得到了这个错误的答案:

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'
回溯(最近一次呼叫最后一次):
文件“evdev1.py”,第1行,在
从evdev导入InputDevice,分类,ecodes
文件“/home/pi/Desktop/evdev.py”,第2行,在
从evdev导入InputDevice,分类,ecodes
ImportError:无法导入名称“InputDevice”
但当我在python shell上从evdev import InputDevice、categorize、ecodes执行
时,它似乎可以工作。
我做错了什么?我怎样才能解决这个问题


谢天谢地,Davi.

这有点让人困惑,但在linux中,访问游戏板/操纵杆有新旧两种方法。较旧的evdev将设备显示为“js*”,而较新的evdev将设备显示为“event*”

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

按如下方式识别设备:

import evdev
devices = [evdev.InputDevice(path) for path in evdev.list_devices()]
for device in devices:
    print(device.path, device.name)
或者如果只有一个,就使用第一个

import evdev
gamepad = evdev.InputDevice( evdev.list_devices()[0] )

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

这就是为什么在另一个工作目录中从evdev import调用