python - 如何捆绑外部 CMake 依赖项以生成 Python 包?
问题描述
我正在尝试为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
命令在任何地方安装绑定。
解决方案
推荐阅读
- javascript - 反应 onClick 不触发(ES6)
- java - 提高设置 TextView RecyclerView 的跨度/可跨度性能
- json - 使用 json4s 对嵌套对象进行自定义 JSON 序列化
- java - 如何确定两行输入之间的变量?
- security - Ember Data 如何处理缓存对象的安全性?
- html - 具有指定高度且可垂直滚动的多列 div
- javascript - HowTo:componentDidMount 和 onclick javascript 问题
- bash - 需要解释读取和命名管道的行为
- python - pybind11 cmake example cannot find the main function
- java - 无法将 Hibernate 项目与 MySQL 数据库连接