可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I am runing Python 2.7.8 at Win 7 operation system. I am trying to communicate a USB device (Numato 32 channel GPIO device) by PyUSB.
I downloaded walac-pyusb-7071ad3 from URL: http://walac.github.io/pyusb
I stop at receiving "ValueError: No backend available". Could any Python expert tell me where is wrong?
Here is the code:
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)
Here is Python error message:
Traceback (most recent call last): File "C:\Python_Yang\PyUSBNumato.py", line 19, in 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
回答1:
I had the same error, but I didn't succeed to use find_library
(TypeError: get_backend() got an unexpected keyword argument 'find_library'
). I suppose, although you did not say it, that backend
is not valid (None
).
Do you have the libusb1 implementation in the path C:\Python27
? I suppose you didn't install it in the Python's folder and if so, there's your answer: PyUSB backend not accessible.
Otherwise, without using find_library
, you must have the libusb1 implementation available in the PATH
environment variable. I did it like this (you can replace os.getcwd()
with your location):
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
回答2:
I had this trouble, and i switched python libusb wrappers and its gone: https://github.com/vpelletier/python-libusb1
回答3:
I did: - Download and install libusb-win32-devel-filter-1.2.6.0.exe. It should work.
From:
Pyusb on windows - no backend available
And really works for me.