Python ctypes 找不到依赖库

Python ctypes can't find dependent library

我在 OSX 上尝试使用 python 3.4(ipython)中的 ctypes 加载依赖库时遇到了很多麻烦。我正在尝试加载 libps3000a.dylib,这取决于 libpicoipp.1.dylib:

import os

print(os.path.exists("/Applications/PicoScope6.app/Contents/Resources/lib/libps3000a.dylib"))
print(os.path.exists("/Applications/PicoScope6.app/Contents/Resources/lib/libpicoipp.1.dylib"))

%env DYLD_LIBRARY_PATH /Applications/PicoScope6.app/Contents/Resources/lib
%env LD_LIBRARY_PATH /Applications/PicoScope6.app/Contents/Resources/lib

from ctypes import cdll
lib = cdll.LoadLibrary("/Applications/PicoScope6.app/Contents/Resources/lib/libps3000a.dylib")

我得到的输出如下:

True
True
env: DYLD_LIBRARY_PATH=/Applications/PicoScope6.app/Contents/Resources/lib
env: LD_LIBRARY_PATH=/Applications/PicoScope6.app/Contents/Resources/lib
---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
<ipython-input-54-df3a8f6477f6> in <module>()
      8 
      9 from ctypes import cdll
---> 10 lib = cdll.LoadLibrary("/Applications/PicoScope6.app/Contents/Resources/lib/libps3000a.dylib")

/Users/jeremy/anaconda/lib/python3.4/ctypes/__init__.py in LoadLibrary(self, name)
    427 
    428     def LoadLibrary(self, name):
--> 429         return self._dlltype(name)
    430 
    431 cdll = LibraryLoader(CDLL)

/Users/jeremy/anaconda/lib/python3.4/ctypes/__init__.py in __init__(self, name, mode, handle, use_errno, use_last_error)
    349 
    350         if handle is None:
--> 351             self._handle = _dlopen(self._name, mode)
    352         else:
    353             self._handle = handle

OSError: dlopen(/Applications/PicoScope6.app/Contents/Resources/lib/libps3000a.dylib, 6): Library not loaded: libpicoipp.1.dylib
  Referenced from: /Applications/PicoScope6.app/Contents/Resources/lib/libps3000a.dylib
  Reason: image not found

谁能告诉我我做错了什么?

看来我找到了解决办法。如果您在 ipython 内核中 运行,ipython 中的 %env 指令不会影响 dlopen 调用。我将提交错误报告。