web-dev-qa-db-fra.com

Pyusb sur Windows - aucun backend disponible

J'essaie d'avoir mon python interface d'application avec un appareil NFC via USB. La meilleure option semble être pyusb, mais je ne peux pas l'obtenir) pour me connecter au backend libusb.

ValueError: aucun backend disponible

J'ai regardé la trace de la pile et constaté que usb/backend/libusb10.py (qui fait partie de pyusb) tente de charger libusb-1.0.dll à utiliser comme backend, mais il ne le trouve pas. Ce n'est pas que ce n'est pas sur mon chemin, ce n'est pas du tout sur mon ordinateur!

J'ai installé libusb-win32 ( http://libusb.org/wiki/libusb-win32 ), mais le répertoire résultant ne semble inclure que libusb0.dll. Où est libusb-1.0.dll ???!

J'aimerais savoir où trouver cette DLL, ou même une autre suggestion pour que pyusb fonctionne sous Windows 7.

24
user634340

Téléchargez et installez libusb-win32-devel-filter-1.2.6.0.exe . Ça devrait marcher.

14
beebek

J'ai récemment rencontré un problème similaire en essayant de parler à un périphérique USB que je développe. J'ai parcouru le Web à la recherche de libusb-1.0.dll et je n'ai pas eu de chance. J'ai trouvé du code source, mais rien de construit et prêt à installer. J'ai fini par installer les binaires libusb-win32, qui est libusb0.dll.

PyUSB recherchera les backends libusb-1.0, libusb0 et openUSB.

libusb0.dll était déjà sur mon système, mais quelque chose n'était toujours pas configuré correctement, PyUSB ne fonctionnait pas.

J'ai suivi les instructions ici pour télécharger et installer le pilote en utilisant les outils GUI fournis pour installer le pilote de filtre et l'assistant INF. Remarque, cela n'a pas fonctionné jusqu'à ce que j'exécute l'assistant INF.

Je suis assez nouveau dans la programmation et j'ai trouvé le manque de documentation/exemples clairs pour enchaîner tout cela plutôt frustrant.

7
Dave L.

J'utilise Python 2.6.5, libusb-win32-device.bin-0.1.12.1 et pyusb-1.0.0-a0 sur un système Windows XP système et continuait de recevoir ValueError: No backend available.

Puisqu'il n'y avait pas vraiment d'aide sur le Web pour ce problème, j'ai passé beaucoup de temps à trouver que ctypes util.py utilise la variable Path pour rechercher le fichier de bibliothèque. Mon path n'incluait pas windows\system32 et PYUSB n'ont pas trouvé la bibliothèque. J'ai mis à jour la variable path et maintenant l'USB fonctionne.

5
George G

"Il existe deux versions de l'API libusb: l'actuelle libusb-1.0 API et son prédécesseur hérité libusb-0.1. "( http://www.libusb.org/ )" libusb-win32 est un port de la bibliothèque USB libusb-0.1 aux systèmes d'exploitation Microsoft Windows "." Télécharger la dernière version du tarball "à partir de même page (1.0.9 est la version actuelle) pour avoir libusb-1.0 équivalent, vous trouverez un dossier Win32, où vous trouverez votre libusb-1.0.dll jouer avec! Vous pouvez même le construire: http://www.libusb.org/wiki/windows_backend .

[~ # ~] modifier [~ # ~] Vous devez le construire (télécharger depuis/ http://sourceforge.net/ projects/libusb/files/libusb-1.0 / ) puisque l'archive est de 2012, tandis que les dernières sources datent du 2014-06-15.

1
Liviu

Pour vous connecter à votre appareil NFC via USB à l'aide de PYUSB, vous devrez installer le backend de cet appareil. Je ne pense pas qu'il y ait de backend pour un appareil autre qu'un appareil libusb.

Pour construire un backend. Vous aurez besoin de connaître le pilote (fichier .sys) de votre appareil, afin que vous puissiez écrire un wrapper DLL pour exposer les fonctionnalités de l'appareil. Votre DLL devrait avoir une méthode pour trouver un appareil basé sur PID & VID, une autre méthode pour ouvrir l'appareil et une autre méthode pour envoyer des données et ainsi de suite ...

0
tbenisa

J'ai eu le même problème avec Windows 10, à la fois Python 2.7.16 et Python 3.7.2. J'ai installé libusb (via python -m pip install libusb) mais le message d'erreur est resté. De plus, les conseils ci-dessus sur l'installation de libusb-win32 n'ont pas fonctionné pour moi; aucun des 2 liens (message d'origine et réponse de @ beebek) n'existait.

Ce qui a fonctionné, cependant, est le commentaire de @ user1495323: j'ai copié libusb-1.0.dll de C:\Users\username\AppData\Roaming\Python\Python27\site-packages\libusb\_platform\_windows\x64\ à C:\Windows\System32\

0
user9393931

Au cas où:

Je n'ai pas essayé cela sur Windows mais j'ai dû définir le chemin DYLD_LIBRARY_PATH pour contourner cette erreur sur le Macintosh.

export DYLD_LIBRARY_PATH =/opt/local/lib

La discussion sur l'opportunité de définir cette variable est ici .

0
fixxxer