Ответ 1
Загрузите и установите libusb-win32-devel-filter-1.2.6.0.exe. Он должен работать.
Я пытаюсь получить интерфейс моего приложения на 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.
Загрузите и установите libusb-win32-devel-filter-1.2.6.0.exe. Он должен работать.
У меня была аналогичная проблема, которая недавно пыталась поговорить с устройством USB, которое я разрабатываю. Я обыскал веб-сайт, ищущий libusb-1.0.dll, и не повезло. Я нашел исходный код, но ничего не было создано и готово к установке. Я закончил установку двоичных файлов libusb-win32, которая является libusb0.dll.
PyUSB будет искать libusb-1.0, libusb0 и openUSB.
libusb0.dll уже был в моей системе, но что-то еще не было настроено правильно, не работает PyUSB.
Я выполнил указания здесь, чтобы загрузить и установить драйвер с помощью инструментов графического интерфейса, предоставленных для установки драйвера фильтра, и мастера INF. Обратите внимание, что это не сработало, пока я не запустил мастер INF.
Я новичок в программировании, и я обнаружил отсутствие четкой документации/примеров, чтобы свести это все вместе к разочарованию.
Я использую 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 работает.
"Существует две версии 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.
У меня была та же проблема с 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\
Там более простое решение.
Загрузите и распакуйте в 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.
Чтобы подключиться к вашему устройству NFC через USB с помощью PYUSB, вам необходимо установить бэкэнд для этого устройства. Я не думаю, что есть какие-либо бэкэнд для любого устройства, кроме устройства libusb.
Чтобы создать бэкэнд. Вам нужно будет узнать драйвер (файл .sys) для вашего устройства, чтобы вы могли написать DLL-оболочку, чтобы выявить функциональные возможности устройства. В вашей DLL должен быть метод поиска устройства на основе PID и VID, другого метода для открытия устройства и другого метода отправки данных и т.д....
На всякий случай:
Я не пробовал это в Windows, но мне пришлось установить путь DYLD_LIBRARY_PATH, чтобы обойти эту ошибку на Macintosh.
export DYLD_LIBRARY_PATH =/opt/local/lib
Обсуждение вопроса о том, следует ли устанавливать эту переменную, here.