我正在Win7操作系统上运行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_YangPyUSBNumato.py", line 19, in <module>
numato = usb.core.find(idVendor=00000006,idProduct = 00000000, backend=backend)
File "C:Python_Yangusbcore.py", line 1199, in find
raise ValueError('No backend available')
ValueError: No backend available
我也有同样的错误,但我没有成功使用find_library
(TypeError: get_backend() got an unexpected keyword argument 'find_library'
)。我想,虽然你没有说,但backend
是无效的(None
)。
您在路径C:Python27
中有libusb1实现吗?我想你没有把它安装在Python的文件夹中,如果是的话,你的答案是:PyUSB后端不可访问。
否则,在不使用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
我遇到了这个问题,我切换了python-libusb包装器,它不见了:https://github.com/vpelletier/python-libusb1
我做到了:-下载并安装libusb-win32-devel-filter-1.2.6.0.exe。它应该可以工作。
发件人:
windows上的Pyusb-没有可用的后端
而且真的对我有用。