我在 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',)
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, in __init__
File "build/bdist.macosx-10.7-x86_64/egg/rflib/chipcon_usb.py", line 238, in resetup
KeyboardInterrupt
从我目前的研究来看,后端是如何pyusb
引用libusb
,libusb1
或openusb
. 它无法libusb
在环境中找到。我做了一点跟踪,发现最终在util.pyfind_library()
中找到了该函数。ctypes
它指的是 MacOS 的可执行路径,@executable_path/../lib/libusb%s.....
我试图将其放入libusb
可执行路径上的文件夹中以希望匹配此函数搜索,但仍然出现相同的错误。pyusb
然后,我找到了有关在此处为后端输入自定义路径的说明。这似乎是一种在程序开始时输入设备和后端信息的方法。我插入的代码如下:
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 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 12, in <module>
File "build/bdist.macosx-10.7-x86_64/egg/rflib/__init__.py", 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。有谁知道如何找到可执行文件路径?
如果有帮助,我将列出命令和文件的默认位置。
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