【问题标题】:How does one get Python to find `libusb`? `pyusb` needs it for a backend如何让 Python 找到“libusb”? `pyusb` 需要它作为后端
【发布时间】:2015-09-24 08:31:20
【问题描述】:

我正在尝试使用 Python 2.7 和 PyUSB 与 National Instruments DAQ 板通信。我正在使用 MacBook Pro 并运行 Yosemite 10.10.4。我已经能够安装 Python 和 PyUSB 包,没有任何明显的问题,但是当我尝试使用 PyUSB 时,它找不到后端库:

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

Traceback (most recent call last):
  File "<pyshell#83>", line 1, in <module>
    usb.core.find()
  File        "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/usb/core.py", line 1199, in find
    raise ValueError('No backend available')
ValueError: No backend available

我尝试了多种不同的方式安装libusb-1.0,但Python 似乎找不到任何名为libusb 的模块。我试过了:

  1. 从 SourceForge 下载压缩包

  2. 安装 brew 并使用“brew install libusb-compat”和“brew link libusb-compat”

  3. 使用 sys.path.append("/usr/local/lib") 帮助 Python 找到 libusb

这就是我绝望的地方:

  1. 使用 pip 来“pip install libusb”(pip 甚至可以与库一起使用吗?)

  2. 将 libusb-1.0.dylib 和其他 libusb 文件所在的 /usr/local/lib 的内容复制到我认为 Python 可能正在寻找它的各个位置。

尽管如此,当我在 IDLE 或 iPython 中调用 help("Modules") 时,没有类似 libusb 的内容出现,并且调用 usb.core.find() 继续抱怨缺少后端。

如何让 Python 找到libusb?它没有出现在help("Modules") 中是否与 usb.core.find() 抱怨缺少后端有关?

到目前为止,我在这方面度过了美好的一天,阅读了 20 篇很好的问答,但无济于事。在这一点上,任何建议都会受到欢迎。此外,这是我对 stackoverflow 的第一个问题,所以请让我澄清一下我是否遗漏了重要的启用信息或我的问题结构不佳。谢谢。

【问题讨论】:

  • 另一个类似的问题似乎已通过以下方式解决:“显然,rfcat 和 ipython 二进制文件都指向了错误的 python 二进制文件 - 而不是 /opt/local/bin/python。将其更改为vim,一切运行良好。” 我不知道如何尝试这个,因为我不确定要编辑哪个文件以使 iPython 或 IDLE 指向不同的二进制文件。我也不知道它可以并且应该指向哪个二进制文件,但我可以通过反复试验来解决。
  • 你试过brew install libusb吗? libusb-compat 库只是一个库,它允许为 libusb 0.1 编写的应用程序与 libusb 1.0 一起使用。我认为 PyUSB 现在已经可以与 libusb 1.0 一起使用,所以它不需要像这样的兼容层。您可能还需要使用从 brew 安装的 python 版本,而不是使用您现在使用的任何版本;我不确定。
  • 是的!我在 /usr/local/bin 中的所有符号链接都指向了错误的 python 实例(即来自 tarball 的那个)。我删除了那个 python 并删除了 brew python,清理了所有东西,然后重新安装了 brew python。现在一切都完美无缺!我没有意识到 brew 会创建一个新版本的 Python,而不仅仅是找到已经存在的那个。非常感谢!
  • David Grayson,最后一个问题。既然您已经让我相信 stackoverflow 很棒,我如何才能将您的评论标记为有用?或者这是不可能的,因为它只是一个评论而不是一个“回答”尝试?
  • 太棒了!我已将我的评论复制到下面的答案中,因此您可以通过单击复选标记将其标记为已接受的答案,并对其进行投票。您也可以为我的评论点赞(将鼠标悬停在上面并单击向上的三角形),但这并没有给我任何声誉积分。

标签: python usb python-module libusb osx-yosemite


【解决方案1】:

你试过brew install libusb吗? libusb-compat 库只是一个库,它允许为 libusb 0.1 编写的应用程序与 libusb 1.0 一起使用。我认为 PyUSB 现在已经可以与 libusb 1.0 一起使用,所以它不需要像这样的兼容层。您可能还需要使用从 brew 安装的 python 版本,而不是使用您现在使用的任何版本;我不确定。

【讨论】:

  • 是的!我在 /usr/local/bin 中的所有符号链接都指向了错误的 python 实例(即来自 tarball 的那个)。我删除了那个 python 并删除了 brew python,清理了所有东西,然后重新安装了 brew python。现在一切都完美无缺!我没有意识到 brew 会创建一个新版本的 Python,而不仅仅是找到已经存在的那个。非常感谢!
猜你喜欢
  • 2012-06-28
  • 2011-04-13
  • 1970-01-01
  • 2016-03-02
  • 2019-04-15
  • 2021-07-06
  • 2020-12-21
  • 2014-08-16
  • 2011-07-06
相关资源
最近更新 更多