ImportError: невозможно импортировать имя 'InputDevice' - Evdev - PullRequest
0 голосов
/ 23 февраля 2019

Я установил evdev на Raspberry Pi 3 B + с помощью sudo -H pip install 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'

Но когда я выполняюfrom evdev import InputDevice, categorize, ecodes на оболочке Python, похоже, работает.Что я делаю неправильно?Как я могу решить это?

К счастью, Дэви.

1 Ответ

0 голосов
/ 03 июня 2019

Это немного сбивает с толку, но в linux есть старые и новые способы доступа к геймпадам / джойстикам.Более старый джойдев показывает устройства как «js *», а новый evdev показывает их как «событие *»

Если вы используете 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] )
...