python包导致OSError:dlopen(libcilin_similarity.dylib,6):找不到图像

时间:2018-01-18 11:48:47

标签: python ctypes

这是我的python包&__ init__.py文件

# mypackage/__init__.py
import ctypes

def init_lib():
    print("init_lib")
    lib = ctypes.CDLL("libcilin_similarity.dylib")

    lib.read_cilin('cilin.txt'.encode('UTF-8'))
    lib.similarity.restype = ctypes.c_float

    return lib


def compare(lib, first_word, second_word):
    print("this should work")
    print(second_word, lib.similarity(first_word.encode('UTF-8'), second_word.encode('UTF-8')))

如果我直接运行__init__.py,它的效果非常好。

但如果我试图从外部导入包,它会不断给我OSError错误:

OSError: dlopen(libcilin_similarity.dylib, 6): image not found

有人可以帮我防止这个错误发生吗?非常感谢!

目录结构是

cilin_similarity
  |- __init__.py
  |- libcilin_similarity.dylib
try.py   # <- where I tried to import the package, but failed 

当我尝试使用绝对路径时,它给了我Error opening file错误...

1 个答案:

答案 0 :(得分:0)

当我使用绝对路径时,它可以工作。事实证明,Error opening file错误是由其他原因引起的。

我的绝对路径代码是:

path = os.path.dirname(os.path.realpath(__file__))
path_lib = path + "/libcilin_similarity.dylib"
lib = ctypes.CDLL(path_lib)

我不确定它是否是最佳解决方案。如果你有更好的答案,请发帖!