Windows 7 上的 Pyusb 找不到任何设备

Posted

技术标签:

【中文标题】Windows 7 上的 Pyusb 找不到任何设备【英文标题】:Pyusb on Windows 7 cannot find any devices 【发布时间】:2011-07-20 02:35:41 【问题描述】:

所以我安装了 Pyusb 1.0.0-alpha-1 在 Windows 下,我无法获得 USB 设备的任何句柄。

>>> import usb.core
>>> print usb.core.find()
None

我确实插入了 1 个 USB 设备(idVendor=0x04d8,idProduct=0x0042),我尝试了usb.core.find(idVendor=0x04d8, idProduct=0x0042),但也失败了。

在 Ubuntu 下,使用相同版本的 pyusb 和 python (2.6),我能够使用该代码成功找到我的设备,并与之通信。

那么如何让 pyusb 在 Windows 7 上找到 USB 设备?

【问题讨论】:

这可能是一个愚蠢的问题,但驱动程序是否安装正确?看起来 PyUSB 依赖于 libusb。见github.com/karlp/karlnet/tree/usbmaster/producers/pyhid @BrianLy 这实际上是一个很好的问题,谢谢!我做了一些修改,发现正在加载 libusb0.1 后端。原来我使用的是 32 位 python 并安装了 64 位 libusb1.0 dll。我用 32 位版本替换了它,现在 usb.core.find() 可以工作了。 但是,我现在还有其他错误。当我尝试device.detach_kernel_header(0) 时,我得到USBError: Operation not supported or unimplemented on this platform 分离内核驱动只在Linux上实现。我猜您正在尝试访问 HID 设备,不是吗?我听说 libusb 不是最好的选择。试试HIDAPI,但我不知道是否有可用的python绑定。 【参考方案1】:

见Turbo J's answer。要为您的设备安装 USB 驱动程序libusb,我找到了两个选项:

使用libusb-win32的inf-wizard.exe创建INF文件,然后使用install-filter-win.exe为你的设备安装libusb驱动。

使用zadig(更简单)

如果没有显示设备,选项 > 列出所有设备 选择libusb-win32作为要安装的驱动

【讨论】:

【参考方案2】:

Libusb 要求您为每个要使用它的设备安装一个特殊的驱动程序。这通常需要您编写一个包含设备 USB ID 的 .inf 文件。只有安装了驱动程序和 inf 文件,libusb 才能“看到”您的设备。

【讨论】:

inf 文件需要放在哪里?我已经按照您的建议完成了仍然得到与 OP 相同的结果【参考方案3】:

在运行 Python 3.9 的 Windows 10 中我也遇到了同样的情况。根据the installation instructions of PyUSB,您需要在Windows 上手动安装libusb。为此,我按照 Windows 文件随附的 README 文件中的说明进行操作(即手动将 libusb-1.0.dlllibusb-1.0.dll.a 复制到 C:\Windows\System32),现在 PyUSB 列出了带有

的设备
import usb.core
import usb.util

list(usb.core.find(find_all=True))

【讨论】:

以上是关于Windows 7 上的 Pyusb 找不到任何设备的主要内容,如果未能解决你的问题,请参考以下文章

pyusb 2.7 windows安装错误

Windows 8.1 上的 Pyusb - 没有可用的后端 - 如何安装 libusb?

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

在路径中找不到“dot.exe”。 Python 上的 Pydot (Windows 7)

设备在 PyUSB 上不可用

Windows 7 中的 .Net 配置工具 (mscorcfg.msc) 在哪里?