Mac OS X上的libusb - “ValueError:没有后端可用”

时间:2012-10-23 15:34:58

标签: python python-2.7 osx-mountain-lion libusb pyusb

我使用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提示,然后找到我的设备,我得到一个“名称'usb'未定义”错误。然后,我导入usb并找到我的设备,然后没有错误。

此时,我非常困惑。上面的命令正是/ usr / local / bin / ipython所包含的,所以我应该得到相同的结果。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

MacPorts在/opt/local下安装libusb。看起来你正在使用/usr/local下安装的ipython,我想这不是通过MacPorts安装的。

/usr/local/bin/ipython可能会在/usr/local/include/下找到libusb库,而不是/opt/local/include/在MacPorts上安装它。

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