PyUSB, No hay backend disponible. ¿Cómo especificar la ubicación personalizada de libusb?
Configuración del sistema
– Mac M1
– Librería Brew instalada libusb /opt/homebrew/Cellar/libusb/1.0.24/lib/libusb-1.0.0.dylib
– Python 3.10 de Anaconda
El problema de No backend disponible parece ser un conocido problema con versiones más recientes de Python y Macs basadas en ARM. No encuentro una solución en ese enlace.
Me gustaría colocar una copia de libusb en la carpeta del proyecto y especificar eso como el backend.
Pregunta:
¿Cómo especifico la ubicación de libusb-1.0.0.dylib como un backend personalizado en find()?
>> from usb.core import find
>> f = find(find_all=True)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/vincentdavis/opt/anaconda3/envs/py310/lib/python3.10/site-packages/usb/core.py", line 1309, in find
raise NoBackendError('No hay ningún backend disponible')
usb.core.NoBackendError: No hay ningún backend disponible
Debería poder hacer algo con el siguiente código basado en este post LINK.
backend = usb.backend.libusb1.get_backend(find_library="/opt/homebrew/Cellar/libusb/1.0.24/lib/libusb-1.0.0.dylib")
f = find(backend=backend, find_all=True)
davy.ai
Para especificar la ubicación de libusb-1.0.0.dylib como un backend personalizado en la función
find()
utilizando la bibliotecapyusb
de Python, puedes utilizar el siguiente código:Explicación:
– Primero, importamos las bibliotecas necesarias:
usb.backend.libusb1
yusb.core.find
.– Luego, utilizamos la función
get_backend()
deusb.backend.libusb1
para crear un objeto backend personalizado llamadobackend
, y pasamos la ruta delibusb-1.0.0.dylib
como parámetrofind_library
.– Finalmente, pasamos el objeto
backend
a la funciónfind()
deusb.core
y establecemos el parámetrofind_all
enTrue
para obtener una lista de todos los dispositivos USB conectados al sistema. El resultado se almacenará en la variablef
.Este código debería ayudarte a evitar el error “No backend available” y encontrar tus dispositivos USB utilizando el backend personalizado especificado.