5

我在 Win 7 操作系统上运行 Python 2.7.8。我正在尝试通过 PyUSB 与 USB 设备(Numato 32 通道 GPIO 设备)通信。

我从 URL 下载了 walac-pyusb-7071ad3:http ://walac.github.io/pyusb

我停止收到“ValueError:没有可用的后端”。任何 Python 专家都可以告诉我哪里错了吗?

这是代码:

import sys
import usb
import usb.core
import usb.util
import usb.backend.libusb1

backend = usb.backend.libusb1.get_backend(find_library=lambda C:'\Python27')
numato = usb.core.find(idVendor=00000006,idProduct = 00000000, backend=backend)

这是 Python 错误消息:

Traceback (most recent call last):
  File "C:\Python_Yang\PyUSBNumato.py", line 19, in <module>
    numato = usb.core.find(idVendor=00000006,idProduct = 00000000, backend=backend)
  File "C:\Python_Yang\usb\core.py", line 1199, in find
    raise ValueError('No backend available')
ValueError: No backend available
4

3 回答 3

2

我有同样的错误,但我没有成功使用find_libraryTypeError: get_backend() got an unexpected keyword argument 'find_library')。我想,虽然你没有说,但那backend是无效的(None)。

您在路径中有 libusb1 实现C:\Python27吗?我想你没有将它安装在 Python 的文件夹中,如果是这样,你的答案就是:PyUSB backend notaccessible

否则,不使用 using find_library,您必须在PATH环境变量中提供 libusb1 实现。我是这样做的(你可以os.getcwd()用你的位置替换):

def get_backend_libusb01():
    libusb01_location = os.getcwd()

    # load-library (ctypes.util.find_library) workaround: also search the current folder
    is_current_folder_in_search_path = True
    if None == usb.backend.libusb0.get_backend():
        is_current_folder_in_search_path = libusb01_location in os.environ['PATH']
        if not is_current_folder_in_search_path:
            os.environ['PATH'] += os.pathsep + libusb01_location

    backend = usb.backend.libusb0.get_backend()

    if not is_current_folder_in_search_path:
        os.environ['PATH'] = os.environ['PATH'].replace(os.pathsep + libusb01_location, "")

    return backend
于 2014-09-11T13:05:26.310 回答
1

我做了: - 下载并安装 libusb-win32-devel-filter-1.2.6.0.exe。它应该工作。

从:

Windows 上的 Pyusb - 没有可用的后端

真的很适合我。

于 2016-10-03T20:44:15.650 回答
1

我遇到了这个麻烦,我切换了 python libusb 包装器并且它消失了:https ://github.com/vpelletier/python-libusb1

于 2016-02-29T08:06:35.747 回答