M1 Mac使用PyUSB提示No backend available,如何指定自定义libusb路径?
解决方案
- 你给出的指定libusb路径的代码写法是正确的,直接运行即可解决当前的
NoBackendError报错。 - 如果要将libusb副本放到项目目录内使用,可按以下方式调整,避免硬编码系统绝对路径:
- 首先将
libusb-1.0.0.dylib文件复制到项目目录下,例如存放到项目内的libs子目录中 - 使用兼容全版本PyUSB的路径传参写法,示例代码如下:
import os import usb.core import usb.backend.libusb1 # 动态获取项目内libusb文件路径,适配不同部署环境 libusb_path = os.path.join(os.path.dirname(__file__), "libs", "libusb-1.0.0.dylib") # lambda写法兼容所有PyUSB版本,避免低版本不支持直接传路径字符串的问题 backend = usb.backend.libusb1.get_backend(find_library=lambda _: libusb_path) devices = usb.core.find(backend=backend, find_all=True)
注意事项
- 你当前使用的Homebrew安装的ARM架构libusb不要动,不要通过conda安装libusb,避免出现x86/ARM架构冲突
- 如果你直接使用绝对路径传参,要注意Homebrew升级libusb后版本号变化会导致路径失效,优先使用项目内副本或者动态获取Homebrew路径的写法
- 运行代码前不需要配置DYLD_LIBRARY_PATH等系统环境变量,直接指定路径即可生效
内容的提问来源于stack exchange,提问作者Vincent
相关产品推荐
相关产品推荐

