窗口上的Pyusb - 没有可用的后端

时间:2012-12-08 00:25:04

标签: python windows-7 libusb pyusb

我正在尝试通过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上运行。

11 个答案:

答案 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.1pyusb-1.0.0-a0并继续接收ValueError: No backend available

由于网络上没有任何关于此问题的真正帮助,我花了很多时间发现ctypes util.py使用Path变量来查找库文件。我的path未包含windows\system32PYUSB未找到该库。我更新了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)

  1. 下载最新的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 page1.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.dllC:\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) 上。我通过安装 pyusblibusb 来解决它 并将 libusb 路径添加到 Windows 环境

  1. pip install pyusb
  2. pip install libusb
  3. libusb-1.0.dll 将自动添加到:

\venv\Lib\site-packages\libusb\_platform\_windows\x64

\venv\Lib\site-packages\libusb\_platform\_windows\x32

  1. 现在只需将这些路径(完整路径)添加到 Windows 路径并重新启动 CMD/PyCharm