1

我在 MacOS Big Sur 上试图运行rfcat. 我也在运行 anaconda,当我最初遇到 Python3.x 错误时,我已经使用 Python2.7 设置了环境。我已经下载了pyusb, pyreadline, ipython,PySide2libusb依赖项。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,libusb1openusb. 它无法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

4

0 回答 0