Подтвердить что ты не робот

Pyusb на окнах - нет доступных бэкэнд

Я пытаюсь получить интерфейс моего приложения на Python с устройством NFC через USB. Наилучшим вариантом кажется pyusb, но я не могу подключить его к бэкенду libusb. Я продолжаю получать

ValueError: бэкэнд недоступен

Я посмотрел на трассировку стека и обнаружил, что usb/backend/libusb10.py (который является частью pyusb) пытается загрузить libusb-1.0.dll для использования в качестве бэкэнда, но не может его найти. Это не значит, что его нет на моем пути, его нет на моем компьютере вообще!

Я установил libusb-win32 (http://libusb.org/wiki/libusb-win32), но результирующий каталог, похоже, содержит только libusb0.dll. Где находится libusb-1.0.dll???!

Я хотел бы знать, где взять эту dll, или даже другое предложение, чтобы заставить pyusb работать на Windows 7.

4b9b3361

Ответ 2

У меня была аналогичная проблема, которая недавно пыталась поговорить с устройством USB, которое я разрабатываю. Я обыскал веб-сайт, ищущий libusb-1.0.dll, и не повезло. Я нашел исходный код, но ничего не было создано и готово к установке. Я закончил установку двоичных файлов libusb-win32, которая является libusb0.dll.

PyUSB будет искать libusb-1.0, libusb0 и openUSB.

libusb0.dll уже был в моей системе, но что-то еще не было настроено правильно, не работает PyUSB.

Я выполнил указания здесь, чтобы загрузить и установить драйвер с помощью инструментов графического интерфейса, предоставленных для установки драйвера фильтра, и мастера INF. Обратите внимание, что это не сработало, пока я не запустил мастер INF.

Я новичок в программировании, и я обнаружил отсутствие четкой документации/примеров, чтобы свести это все вместе к разочарованию.

Ответ 3

Я использую Python 2.6.5, libusb-win32-device.bin-0.1.12.1 и pyusb-1.0.0-a0 в системе Windows XP и продолжаю получать ValueError: No backend available.

Поскольку в этой проблеме не было никакой реальной помощи, я потратил много времени на то, что ctypes util.py использует переменную Path для поиска файла библиотеки. Мой Path не включал windows\system32 и PYUSB не нашел библиотеку. Я обновил переменную Path, и теперь USB работает.

Ответ 4

"Существует две версии API libusb: текущий API libusb-1.0 и его предыдущий предшественник libusb-0.1." (http://www.libusb.org/) "libusb-win32 - это порт библиотеки USB libusb-0.1 для операционных систем Microsoft Windows". "Загрузите последнюю версию tarball" из той же страницы (1.0.9 - текущая версия), чтобы иметь эквивалент libusb-1.0, вы найдете папку Win32, где вы найдете свой libusb-1.0.dll, чтобы играть! Вы даже можете его построить: http://www.libusb.org/wiki/windows_backend.

ИЗМЕНИТЬ Вы должны его построить (загрузить с /http://sourceforge.net/projects/libusb/files/libusb-1.0/), так как tarball с 2012 года, а последние источники - с 2014-06-15.

Ответ 5

У меня была та же проблема с Windows 10, и Python 2.7.16, и Python 3.7.2. Я установил libusb (через python -m pip install libusb), но сообщение об ошибке осталось. Кроме того, приведенный выше совет по установке libusb-win32 у меня не сработал; ни одна из двух ссылок (оригинальный пост и ответ @beebek) не существовала.

работает, однако, комментарий @user1495323: я скопировал libusb-1.0.dll из C:\Users\username\AppData\Roaming\Python\Python27\site-packages\libusb\_platform\_windows\x64\ к C:\Windows\System32\

Ответ 6

Там более простое решение.

Загрузите и распакуйте в C:\PATH файл libusb-1.0.20 по ссылке для скачивания

Затем попробуйте эту строку:

backend = usb.backend.libusb1.get_backend(find_library=lambda x: "C:\PATH\libusb-1.0.20\MS32\dll\libusb-1.0.dll")

dev = usb.core.find(backend=backend, find_all=True)

В зависимости от вашей системы, попробуйте версию DLL. MS64 или MS32.

Ответ 7

Чтобы подключиться к вашему устройству NFC через USB с помощью PYUSB, вам необходимо установить бэкэнд для этого устройства. Я не думаю, что есть какие-либо бэкэнд для любого устройства, кроме устройства libusb.

Чтобы создать бэкэнд. Вам нужно будет узнать драйвер (файл .sys) для вашего устройства, чтобы вы могли написать DLL-оболочку, чтобы выявить функциональные возможности устройства. В вашей DLL должен быть метод поиска устройства на основе PID и VID, другого метода для открытия устройства и другого метода отправки данных и т.д....

Ответ 8

На всякий случай:

Я не пробовал это в Windows, но мне пришлось установить путь DYLD_LIBRARY_PATH, чтобы обойти эту ошибку на Macintosh.

export DYLD_LIBRARY_PATH =/opt/local/lib

Обсуждение вопроса о том, следует ли устанавливать эту переменную, here.