使用conda安装和查找共享库

MRo*_*lin 5 python ctypes anaconda conda

我想构建两个相关的conda包:

  1. libfoo.so具有已编译代码的共享对象文件
  2. 围绕该代码的Python包装器, foopy

导入后,foopy模块需要找到该libfoo.so文件,然后将其与ctypes一起使用:

so_directory = ???
lib = ctypes.cdll.LoadLibrary(os.path.join(so_directory, 'libfoo.so'))
Run Code Online (Sandbox Code Playgroud)

如何可靠地找到libfoo.so文件的位置?我很乐意改变这两种食谱.

msa*_*han 5

我建议将.so安装到PREFIX/lib文件夹 - 换句话说,将其放在默认搜索路径上.

对于Windows/Anaconda,这是PREFIX/Library/bin.

编辑:

PREFIX就在你安装Python的地方.这可能是/ usr或/ usr/local,或〜/ miniconda

也:

您应该删除os.path.join位并将文件名传递给DLL加载.它将查看默认路径,只要您从PREFIX运行python,它将包含上面提到的路径.