PyUSB无法找到设备

2 投票
3 回答
7477 浏览
提问于 2025-04-17 08:36

我在使用 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

撰写回答