4

我正在尝试为OpenVSlam项目生成 Python 绑定。

我正在使用 PyBind11 并遵循cmake_example模板。

我在我的开发环境中成功构建了该.so文件pybind11_add_module,其中安装了所有依赖项(OpenCV、Protobuf 等库)。该.so文件在此开发环境中运行良好。我可以import sys; sys.path.append('.'); import openvslam_python;正确运行和使用绑定功能。但是,我想将.so文件作为 Python 包提供。

问题是,当我运行python3 setup.py sdist bdist_wheel并尝试wheel在另一个环境(没有安装的依赖项)上安装结果时,它说它找不到依赖项的.so文件。例如,它输出以下错误(在 Docker 容器中):

>>> import sys
>>> sys.path.append('.')
>>> import openvslam_python
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: libopenvslam.so: cannot open shared object file: No such file or directory

我想知道是否有一种方法可以将 PyBind11 绑定的依赖项与 CMake(或者可能在setup.py脚本内部)捆绑在一起,以便能够将它们安装在没有安装任何依赖项的环境中。这样,我可以用一个简单的pip install命令在任何地方安装绑定。

4

0 回答 0