问题描述
我在 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 (将#修改为@)