python - 使用 conda 安装和查找共享库

标签 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'))

如何可靠地找到 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/

相关文章:

c++ - 通过 python ctypes 使用时,opencv 调用共享库段错误

python - GAE Python : dev_appserver. py:错误:参数太少

python - 我如何让 mysql 在 anaconda ide (spyder) 中与 python 3.6 一起工作?

python - 如何判断python中的信号量是否已满

python - 使用plot_date绘制日期

python - 在 pandas df 中添加缺失的日期,但日期范围有(有效)重复项

python - 我可以使用 ctypes 为可变参数 Python 函数创建原型(prototype),以便 DLL 可以将此函数作为回调调用吗?

python 错误; 'NoneType' 对象没有属性 'after'

python - WindowsError 异常访问冲突 - 在简单的 python c++ ctypes 接口(interface)中

python - 更改 conda 默认 python 版本