我正在尝试通过USB将我的python应用程序接口与NFC设备连接。 最好的选择似乎是pyusb,但我不能让它连接到libusb后端。 我一直在
ValueError:没有可用的后端
我查看了堆栈跟踪,发现usb/backend/libusb10.py
(这是pyusb的一部分)正在尝试加载libusb-1.0.dll
以用作后端,但它无法找到它。这不是它不在我的道路上,它根本不在我的电脑上!
我安装了libusb-win32(http://libusb.org/wiki/libusb-win32),但生成的目录似乎只包含libusb0.dll。 libusb-1.0.dll在哪里???!
我很想知道在哪里获得该dll,或者甚至不同的建议让pyusb在Windows 7上运行。
答案 0 :(得分:13)
下载并安装libusb-win32-devel-filter-1.2.6.0.exe。它应该工作。
答案 1 :(得分:6)
我最近有一个类似的问题,试图与我正在开发的USB设备进行通信。我在网上搜索libusb-1.0.dll并且没有运气。我找到了源代码,但没有构建并准备安装。我最终安装了libusb-win32二进制文件,这是libusb0.dll。
PyUSB将搜索libusb-1.0,libusb0和openUSB后端。
libusb0.dll已经存在于我的系统中,但仍未正确设置,PyUSB无法正常工作。
我按照here的说明使用提供的GUI工具下载并安装驱动程序,以安装过滤器驱动程序和INF向导。注意,在我运行INF向导之前它没有用。
我对编程很陌生,而且我发现缺少清晰的文档/示例,将这些全部串联起来相当令人沮丧。
答案 2 :(得分:5)
我在Windows XP系统上使用Python 2.6.5,libusb-win32-device.bin-0.1.12.1
和pyusb-1.0.0-a0
并继续接收ValueError: No backend available
。
由于网络上没有任何关于此问题的真正帮助,我花了很多时间发现ctypes util.py
使用Path
变量来查找库文件。我的path
未包含windows\system32
,PYUSB
未找到该库。我更新了path
变量,现在USB正在运行。
答案 3 :(得分:2)
有一个更简单的解决方案。
从download link 下载libusb-1.0.20并将其解压缩到C:\ PATH
然后尝试以下行:
后端= usb.backend.libusb1.get_backend(find_library = lambda x:“ C:\ PATH \ libusb-1.0.20 \ MS32 \ dll \ libusb-1.0.dll”)
dev = usb.core.find(backend = backend,find_all = True)
根据您的系统,尝试使用MS64或MS32版本的.dll
答案 4 :(得分:2)
下载最新的libusb Download libusb
将 MS32 \ dll \ libusb-1.0.dll 复制到 C:\ Windows \ SysWOW64
将 MS64 \ dll \ libusb-1.0.dll 复制到 C:\ Windows \ System32
3。
pip install libusb
将 MS32 \ dll \ libusb-1.0.dll 复制到 C:\ Python \ Python37-32 \ Lib \ site-packages \ libusb_platform_windows \ x86
将 MS64 \ dll \ libusb-1.0.dll 复制到 C:\ Python \ Python37-32 \ Lib \ site-packages \ libusb_platform_windows \ x64
此方法对我有用。
答案 5 :(得分:1)
“libusb API有两个版本:当前的libusb-1.0
API及其旧版前身libusb-0.1
。” (http://www.libusb.org/)“libusb-win32
是USB库libusb-0.1
到Microsoft Windows操作系统的端口”。从same page(1.0.9
是当前版本)下载“最新版本tarball”以获得等效的libusb-1.0
,您将找到一个文件夹Win32
,您将在其中找到找到你的libusb-1.0.dll
玩!您甚至可以构建它:http://www.libusb.org/wiki/windows_backend。
修改强> 您必须构建它(从http://sourceforge.net/projects/libusb/files/libusb-1.0/下载),因为tarball是从2012年开始的,而最新的来源是2014-06-15。
答案 6 :(得分:0)
要使用PYUSB通过USB连接到NFC设备,您需要安装该设备的后端。我不认为除libusb设备之外的任何设备都没有后端。
构建后端。您需要知道设备的驱动程序(.sys文件),因此您可以编写一个包装器DLL来公开设备中的功能。您的DLL必须有一种方法来根据PID& amp;找到设备。 VID,另一种打开设备的方法和另一种发送数据的方法等等......
答案 7 :(得分:0)
以防万一:
我没有在Windows上试过这个,但是我必须设置DYLD_LIBRARY_PATH路径以避免在Macintosh上出现此错误。
export DYLD_LIBRARY_PATH = / opt / local / lib
关于是否设置此变量的讨论是here。
答案 8 :(得分:0)
我在Windows 10上遇到了同样的问题,Python 2.7.16和Python 3.7.2。我安装了libusb(通过python -m pip install libusb
),但错误消息仍然存在。另外,上面关于安装libusb-win32的建议对我不起作用;这两个链接(原始帖子和@beebek的答案)都不存在。
完成的工作是@ user1495323的评论:我从{{1}
libusb-1.0.dll
到C:\Users\username\AppData\Roaming\Python\Python27\site-packages\libusb\_platform\_windows\x64\
答案 9 :(得分:0)
libusb 后端由 /usb 路径中的 python 脚本初始化,通过从 Windows PATH 加载二进制 DLL,如果它丢失或被 zadig 的虚拟 DLL 安装,它会抱怨这个。因为 zadig 安装的 DLL 没有'不将任何符号导出到外部世界(我猜是虚拟的)
答案 10 :(得分:0)
2021 并且问题仍然出现在 Windows (Windows 10) 上。我通过安装 pyusb
和 libusb
来解决它 并将 libusb 路径添加到 Windows 环境:
pip install pyusb
pip install libusb
libusb-1.0.dll
将自动添加到:\venv\Lib\site-packages\libusb\_platform\_windows\x64
和
\venv\Lib\site-packages\libusb\_platform\_windows\x32