4

我正在运行带有 python 2.7 的 Mac OS X 10.8。我用 MacPorts 安装了 libusb,它确实有效(测试了我的导入 usb.core 和 usb.util)。但是,每次我尝试访问设备时,都会出现以下错误:

>>> dev=usb.core.find(idVendor=0x1d50, idProduct=0x6048)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Python/2.7/site-packages/usb/core.py", line 829, in find
raise ValueError('No backend available')
ValueError: No backend available

我已经尝试了其他几件事,例如import usb.backend,但我不确定那应该做什么。同样的结果,经过3天的工作。

提前感谢您的帮助!

编辑:这实际上已经改变了。我不确定我修改了哪个文件以及如何修改,但现在以下工作:

>>> import usb
>>> usb.core.find(idVendor=0x1d50, idProduct=0x6048)
<usb.core.Device object at 0x10eb2f2d0>

但是,现在当我运行时sudo rfcat -r(这是让 libusb 正常工作的真正目的),我仍然会收到以下错误消息:

Error in resetup():ValueError('No backend available',)

编辑:似乎问题出在 ipython 上。当我以 root 身份启动 ipython 并导入 usb 时,我无法找到我的设备:

In [1]: import usb

In [2]: import usb.util

In [3]: import usb.core

In [4]: usb.core.find(idVendor=0x1d50, idProduct=0x6048)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-4-7884198c46c2> in <module>()
----> 1 usb.core.find(idVendor=0x1d50, idProduct=0x6048)

/Library/Python/2.7/site-packages/usb/core.pyc in find(find_all, backend, custom_match, **args)
    827                 break
    828         else:
--> 829             raise ValueError('No backend available')
    830 
    831     k, v = args.keys(), args.values()

ValueError: No backend available

In [5]: 

编辑:天哪,再一次。如果我启动 python,则运行以下命令:

>>> from IPython.frontend.terminal.ipapp import launch_new_instance
>>> launch_new_instance()

我得到一个 ipython 提示。当我在其中导入 USB 并找到我的设备时,没有后端错误。

如果我在 python 中导入 usb,然后执行上面的这些命令以获取 ipython 提示,然后找到我的设备,我会收到“name 'usb' not defined”错误。然后,我导入usb并找到我的设备,然后没有错误。

在这一点上,我非常困惑。上面的命令正是 /usr/local/bin/ipython 包含的内容,所以我应该得到相同的结果。

4

2 回答 2

0

我已经解决了这个问题。显然,rfcat 和 ipython 二进制文件都指向了错误的 python 二进制文件——而不是 /opt/local/bin/python。在vim中改变了它,一切都运行良好。

现在,问题是 libusb 似乎无法很好地控制设备 - 它无法执行最基本的命令,但这是另一个问题。

于 2012-10-24T05:28:40.677 回答
0

MacPorts 将 libusb 安装在/opt/local. 看起来您正在使用安装的 ipython /usr/local,我猜它不是通过 MacPorts 安装的。

/usr/local/bin/ipython可能会在 MacPorts 安装的位置/usr/local/include/而不是在其中查找 libusb 库。/opt/local/include/

您可以通过 MacPorts 安装 iPython,因为它可以在 /opt/local 下查找也使用 MacPorts 安装的库,或者正如@Slava 回答的那样,您可以修改 rfcat 和 ipython 以指向/opt/local/

于 2017-05-07T08:20:49.347 回答