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.dll
和 libusb-1.0.dll.a
复制到 C:\Windows\System32
),现在 PyUSB 列出了带有
import usb.core
import usb.util
list(usb.core.find(find_all=True))
【讨论】:
以上是关于Windows 7 上的 Pyusb 找不到任何设备的主要内容,如果未能解决你的问题,请参考以下文章
Windows 8.1 上的 Pyusb - 没有可用的后端 - 如何安装 libusb?