ImportError: невозможно импортировать имя 'InputDevice' - Evdev

Я установил 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, похоже, работает. Что я делаю неправильно? Как я могу решить это?

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

0 ответов

Это написано в вашей трассировке ошибок: у вас есть файл с именем evdev1.py и файл evdev.pyв вашем рабочем каталоге. Anfrom evdev import ... в evdev1.py попытается импортировать из файла "/home/pi/Desktop/evdev.py" - который тоже является модулем.

Вот почему звоню from evdev import ... из другого рабочего каталога работает.

Это немного сбивает с толку, но в linux есть старые и новые методы доступа к геймпадам / джойстикам. Более старый joydev показывает устройства как "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] )
Другие вопросы по тегам