Оболочка Python говорит, что нет модуля с именем usb, но оболочка Linux не

Я искал документацию на pyusb . Нашел эту ссылку и попытался использовать ответ Леннарта Ренегро.

import usb в оболочке Python на IDLE выдал следующую ошибку:

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    import usb
ImportError: No module named 'usb'

Тем не менее, я запустил эту программу, используя python first.py на баш:

import usb

dev = usb.core.find(idVendor = 0xfffe, idProduct = 0x0001)

if dev is None:
    raise ValueError('Device not found')

dev.set_configuration()

cfg = dev.get_active_configuration()

interface_number = cfg[(0,0)].bInterfaceNumber
alternate_setting = usb.control.get_interface(interface_number)
intf = usb.util.find_descriptor(cfg, bInterfaceNumber = interface_number, bAlternateSetting = alternate_setting)

ep = usb.util.find.descriptor(intf, custom_match = lambda e: usb.util.endpoint_direction(e.bEndpointAddress) == usb.util.ENDPOINT_OUT)
assert ep is not None

ep.write('test')

и bash возвращают следующую ошибку (которую я ожидал, потому что я не подключил ни одного usb-устройства atm):

Traceback (most recent call last):
  File "first.py", line 6, in <module>
    raise ValueError('Device not found')
ValueError: Device not found

Что здесь происходит? И как мне читать эти документы?

1 ответ

Решение

Подводя итог вышеприведенному обсуждению, очевидно, что версии Python IDLE и оболочка Python по умолчанию различаются. Вы установили pyusb для Python 2.7.5, в то время как вы хотите использовать его на IDLE, который запускает Python 3.3.2.

Чтобы решить эту проблему, либо

  • устанавливать pyusb для питона 3.3.2
  • Обязательно используйте Python 2.7.5 с IDLE. Что касается последнего, вы можете взглянуть на вопрос, на который @justhalf указал: Python IDLE: Изменить версию Python
Другие вопросы по тегам