我想构建两个相关的 conda 包:
- 带有编译代码的共享目标文件
libfoo.so
- 围绕该代码的 Python 包装器,
foopy
导入后,foopy
模块需要找到 libfoo.so
文件,然后它将与 ctypes 一起使用:
so_directory = ???
lib = ctypes.cdll.LoadLibrary(os.path.join(so_directory, 'libfoo.so'))
如何可靠地找到 libfoo.so
文件所在的位置?我很乐意改变任何一个食谱。
最佳答案
我建议将 .so 安装到 PREFIX/lib 文件夹 - 换句话说,将其放在默认搜索路径上。
对于 Windows/Anaconda,这是 PREFIX/Library/bin。
编辑:
PREFIX 就在你安装了 Python 的地方。这可能是/usr 或/usr/local,或 ~/miniconda
还有:
您应该删除 os.path.join 位并只将文件名传递到 DLL 加载中。它会查找默认路径,只要您从 PREFIX 运行 python,就会包含上述路径。
关于python - 使用 conda 安装和查找共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34797147/