es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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)
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para especificar la ubicación de libusb-1.0.0.dylib como un backend personalizado en la función find() utilizando la biblioteca pyusb de Python, puedes utilizar el siguiente código:

    import usb.backend.libusb1
    
    backend = usb.backend.libusb1.get_backend(find_library="/opt/homebrew/Cellar/libusb/1.0.24/lib/libusb-1.0.0.dylib")
    
    f = usb.core.find(backend=backend, find_all=True)
    

    Explicación:
    – Primero, importamos las bibliotecas necesarias: usb.backend.libusb1 y usb.core.find.
    – Luego, utilizamos la función get_backend() de usb.backend.libusb1 para crear un objeto backend personalizado llamado backend, y pasamos la ruta de libusb-1.0.0.dylib como parámetro find_library.
    – Finalmente, pasamos el objeto backend a la función find() de usb.core y establecemos el parámetro find_all en True para obtener una lista de todos los dispositivos USB conectados al sistema. El resultado se almacenará en la variable f.

    Este código debería ayudarte a evitar el error “No backend available” y encontrar tus dispositivos USB utilizando el backend personalizado especificado.

Comments are closed.