如何解决Pyusb 和 Libusb 在 MacOS 上给出 NoBackendError
我在 MacOS Big Sur 上尝试运行 rfcat
。我也在运行 anaconda,当我最初使用 Python3.x 出现错误时,我已经使用 Python2.7 设置了一个环境。我已经下载了 pyusb
、pyreadline
、ipython
、PySide2
和 libusb
依赖项。 Libusb 似乎给我带来了最大的麻烦。我不断收到以下错误:
Error in resetup():NoBackendError('No backend available',)
Error in resetup():NoBackendError('No backend available',)
^CTraceback (most recent call last):
File "/opt/anaconda3/envs/rftools/bin/rfcat",line 4,in <module>
__import__('pkg_resources').run_script('rfcat==1.9.5','rfcat')
File "/opt/anaconda3/envs/rftools/lib/python2.7/site-packages/pkg_resources/__init__.py",line 666,in run_script
self.require(requires)[0].run_script(script_name,ns)
File "/opt/anaconda3/envs/rftools/lib/python2.7/site-packages/pkg_resources/__init__.py",line 1469,in run_script
exec(script_code,namespace,namespace)
File "/opt/anaconda3/envs/rftools/lib/python2.7/site-packages/rfcat-1.9.5-py2.7.egg/EGG-INFO/scripts/rfcat",line 63,in <module>
File "build/bdist.macosx-10.7-x86_64/egg/rflib/__init__.py",line 208,in interactive
File "build/bdist.macosx-10.7-x86_64/egg/rflib/chipcon_nic.py",line 103,in __init__
File "build/bdist.macosx-10.7-x86_64/egg/rflib/chipcon_usb.py",line 93,line 238,in resetup
KeyboardInterrupt
从我目前的研究来看,后端是 pyusb
如何指代 libusb
、libusb1
或 openusb
。它无法在环境中找到 libusb
。我做了一点跟踪,发现最终在 util.py 的 find_library()
中找到了 ctypes
函数。它指的是带有 @executable_path/../lib/libusb%s.....
的 MacOS 的可执行路径我试图将 libusb
放入我的可执行路径上的文件夹中以希望与此函数搜索匹配,但仍然遇到相同的错误。然后我找到了有关为 pyusb
here 输入后端自定义路径的说明。这似乎是一种在程序开头输入设备和后端信息的方法。我插入的代码如下:
import usb.core
import usb.backend.libusb1 as libusb1
backend = libusb1.get_backend(find_library=lambda x: "/path/to/file/lib/libusb-1.0.0.dylib")
dev = usb.core.find(idVendor=“MyVID”,idProduct=“MyPID”,backend=backend)
当我将代码放在 rflib.init
和 rfcat
代码中时,这引发了类似的错误,但具有不同的回溯:
Traceback (most recent call last):
File "/opt/anaconda3/envs/rftools/bin/rfcat",line 12,line 15,in <module>
File "/opt/anaconda3/envs/rftools/lib/python2.7/site-packages/usb/core.py",line 1304,in find
raise NoBackendError('No backend available')
usb.core.NoBackendError: No backend available
此后我已将事情重置为我开始时的状态,但仍然出现上面列出的原始错误。
我认为这很大程度上与 anaconda 环境有关,我当然可以将其删除。我想尝试找到一种方法来完成这项工作。有没有更好的方法来帮助 rfcat
根据需要找到 libusb
?另一种可能的解决方案是解析实际的 executable_path。有谁知道如何找到executable_path?
如果有帮助,我会列出命令和文件的默认位置。
rfcat:/opt/anaconda3/envs/rftools/lib/python2.7/site-packages/rfcat
pyusb:/opt/anaconda3/envs/rftools/lib/python2.7/site-packages/usb
ctypes:/opt/anaconda3/envs/rftools/lib/python2.7/ctypes
libusb:/opt/anaconda3/envs/rftools/lib/python2.7/site-packages/usb/lib
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。