使用 pybind11 链接其他共享库构建库

bin*_*bin 3 c++ python pybind11

我的项目回复了一个 SO 文件,我将通过cmake在我的项目文件夹下安装它来制作它。当我运行时它可以运行文件python setup.py install

但是我是用pip安装的,因为pip会把项目拷贝成tmpfile,安装后会被删除,SO文件也被删除。因此,当我导入我的项目时,由于找不到 SO 文件而失败。

当然,我可以将 SO 文件安装到/usr/local/lib,但我不想

任何人都有解决它的想法?

Ser*_*gei 5

您需要使您的共享库在运行时可被发现。适用于常规 C++ 可执行文件的规则相同。

这里有几个选项(列表可能不完整):

  • 将共享库与其他共享库一起放置(例如/usr/lib/
  • 将带有共享库路径的自定义配置添加到 /etc/ld.so.conf.d/my_lib.conf
  • LD_LIBRARY_PATH在调用python解释器之前设置
  • LD_PRELOAD到运行Python解释器
  • 将共享库的路径设置RPATH为 pybind11 模块的属性。

我个人使用后一个选项:它允许我自由使用 virtualenv