【发布时间】:2018-03-06 18:23:09
【问题描述】:
所以我尝试在 conda 环境中使用 pyusb,但失败并出现以下错误:
>>> import usb.core
>>> usb.core.find()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/foo/Developer/anaconda3/envs/delme/lib/python3.6/site-packages/usb/core.py", line 1263, in find
raise NoBackendError('No backend available')
我假设发生这种情况是因为它找不到 libusb。我尝试通过pip 在conda 环境中安装libusb 和libusb1,并通过brew 在系统范围内(libusb 和libusb-compat)安装,但这些都没有帮助。
【问题讨论】:
-
pyusb是如何寻找后端的?
-
好像在用
ctypes.util.find_library -
this question 帮助了。如果我手动将
/usr/local/lib添加到DYLD_LIBRARY_PATH环境变量find_library 可以看到libusb,但人们会认为它应该已经存在了。 -
我知道发生了什么。由于我不记得的原因,我在尝试编译某些东西时添加了一些到 DYLD_FALLBACK_LIBRARY_PATH 的路径。根据 dyld 的手册,DYLD_FALLBACK_LIBRARY_PATH 的默认值是 $(HOME)/lib:/usr/local/lib:/lib:/usr/lib 它涵盖了 libusb 的位置,但看起来通过扩展 DYLD_FALLBACK_LIBRARY_PATH 它丢失了这些默认值。跨度>
-
太棒了!恭喜你弄明白了!您可以在此处发布答案以关闭此问题。