python - win32 - pyusb install
Pyusb en windows-no hay backend disponible (6)
Estoy tratando de tener mi interfaz de aplicación python con un dispositivo NFC a través de USB. La mejor opción parece ser pyusb, pero no puedo conectarlo al backend de libusb. Sigo recibiendo
ValueError: No hay backend disponible
He mirado el seguimiento de la pila y he encontrado que usb/backend/libusb10.py
(que es parte de pyusb) está intentando cargar libusb-1.0.dll
para usarlo como backend, pero no puede encontrarlo. No es que no esté en mi camino, ¡no está en mi computadora en absoluto!
He instalado libusb-win32 ( http://libusb.org/wiki/libusb-win32 ), pero el directorio resultante solo parece incluir libusb0.dll. ¿Dónde está libusb-1.0.dll ???!
Me encantaría saber dónde obtener esa DLL, o incluso una sugerencia diferente para que Pyusb funcione en Windows 7.
"Hay dos versiones de la API de libusb: la actual API de libusb-1.0
y su predecesora heredada libusb-0.1
". ( http://www.libusb.org/ ) " libusb-win32
es un puerto de la biblioteca USB libusb-0.1
a los sistemas operativos Microsoft Windows". "Descargue el último archivo tar de lanzamiento" de la http://www.libusb.org/ ( 1.0.9
es la versión actual) para tener el equivalente de libusb-1.0
, ¡encontrará una carpeta Win32
, donde encontrará su libusb-1.0.dll
para jugar! Incluso puedes construirlo: http://www.libusb.org/wiki/windows_backend .
EDITAR Debe crearlo (descargar desde / http://sourceforge.net/projects/libusb/files/libusb-1.0/ ) ya que el archivo tar es de 2012, mientras que las últimas fuentes son de 2014-06-15.
Descargue e instale libusb-win32-devel-filter-1.2.6.0.exe . Deberia de funcionar.
Estoy usando Python 2.6.5, libusb-win32-device.bin-0.1.12.1
y pyusb-1.0.0-a0
en un sistema Windows XP y seguí recibiendo ValueError: No backend available
.
Como no había ninguna ayuda real en la web para este problema, dediqué mucho tiempo a encontrar que ctypes util.py
usa la variable Path
para encontrar el archivo de la biblioteca. Mi path
no incluía windows/system32
y PYUSB
no encontró la biblioteca. Actualicé la variable de path
y ahora el USB está funcionando.
Para conectarse a su dispositivo NFC a través de USB utilizando PYUSB, deberá instalar el backend para ese dispositivo. No creo que haya ningún backend para ningún dispositivo que no sea un dispositivo libusb.
Para construir un backend. Necesitará conocer el controlador (archivo .sys) de su dispositivo, por lo que podría escribir un DLL envoltorio para exponer las funcionalidades en el dispositivo. Su DLL debería tener un método para encontrar un dispositivo basado en PID y VID, otro método para abrir el dispositivo y otro método para enviar datos, etc.
Por si acaso:
No he intentado esto en Windows pero tuve que establecer la ruta DYLD_LIBRARY_PATH para evitar este error en la Macintosh.
exportar DYLD_LIBRARY_PATH = / opt / local / lib
La discusión sobre si establecer o no esta variable está here .
Recientemente tuve un problema similar al intentar hablar con un dispositivo USB que estoy desarrollando. Recorrí la web en busca de libusb-1.0.dll y no tuve suerte. Encontré el código fuente, pero nada construido y listo para instalar. Acabé de instalar los binarios libusb-win32, que es el libusb0.dll.
PyUSB buscará los backends libusb-1.0, libusb0 y openUSB.
libusb0.dll ya estaba en mi sistema, pero algo no estaba bien configurado, no funciona PyUSB.
Seguí las instrucciones here para descargar e instalar el controlador utilizando las herramientas GUI proporcionadas para instalar el controlador del filtro y el asistente INF. Tenga en cuenta que no funcionó hasta que ejecuté el asistente INF.
Soy bastante nuevo en programación y he encontrado que la falta de documentación / ejemplos claros para encadenar todo esto es bastante frustrante.