PyUSB无法找到设备
我在使用 OS X 10.5 系统,想通过 PyUSB 连接一个 USB 设备,使用了下面的代码。
import usb.core, time, usb
dev = usb.core.find(idVendor=0x054c,idProduct=0x0155)
if dev is None:
raise ValueError('Device not found') # if device not found report an error
但是出现了一个值错误,提示“设备未找到”。在 OS X 的系统信息中,可以看到设备的产品 ID 和供应商 ID 是……
EyeToy USB camera Namtai:
Product ID: 0x0155
Vendor ID: 0x054c (Sony Corporation)
Version: 1.00
Speed: Up to 12 Mb/sec
Manufacturer: Sony corporation
Location ID: 0x06200000 / 3
Current Available (mA): 500
Current Required (mA): 500
解决办法: 我需要手动安装 libusb-1.0.8。因为 Mac-ports 没有正确安装 libusb。
3 个回答
0
我之前也遇到过同样的问题,我是通过MacPorts安装了libusb,但使用的是通过pyenv安装的python。
确保你使用的是通过MacPorts安装的python版本。
which python
上面的代码可以告诉你正在使用的python版本的位置。它应该显示/opt/local/bin/python2.7
,或者你通过MacPorts安装的其他版本。
我觉得问题出在,通过pyenv安装的python或者macOS自带的python会在/usr
目录下寻找libusb库,而MacPorts则是在/opt/local
目录下安装这个库。
3
试着通过PyUSB来列举你的设备。这个例子来自文档,用来找到所有的打印机(设备类别是7):
printers = usb.core.find(find_all=True, bDeviceClass=7)
希望这样能找到你的设备,你可以看看这些字段到底是什么。你的相机可能属于类别0x0e或0x10。
1
我通过Homebrew安装libusb解决了我的问题。
[sudo] brew install libusb