c++ - pybind c++ 用于多个 python 版本

标签 c++ python-3.x pybind11 python-wheel

有人为我们设置了 cmake 使用 pybind 创建一个 .pyd 模块,我们将其与一些纯 python 文件一起打包到一个轮子中。

我们正在从旧的 3.7 python 切换到现代 Python,因此我们希望支持新旧 Python 版本的 Wheel,至少现在是这样。

我已经阅读了 pybind 文档,由于我对 cmake 不熟悉,我发现它不清楚。所以我正在寻求澄清。

我的理解是,您必须编译两次,一次“针对”3.7,另一次针对较新的版本。但我认为这根本不重要(如果你要手动编码包装到 python),或者最多我认为如果我们针对两个不同的主要版本(即 python2 与 python3),这会很重要。

我的问题是这是否真的需要。我可以避免第二次编译并将“for python 3.7”编译到我们为较新的 python 构建的轮子中时得到的 .pyd 吗?

最佳答案

是的,有必要。 CPython ABI 随版本的不同而变化,通常以不兼容的方式变化,因此您必须单独为每个版本进行编译。

关于c++ - pybind c++ 用于多个 python 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75226530/

相关文章:

python-3.x - 我们如何添加具有相同 id 的数据框?

python - 如何使用给定列表创建分页函数

c++ - constexpr double Point::* coords[3] 究竟是如何工作的?

c++ - 从 C 中的图像裁剪聚焦对象

python - 如何创建在 Python 内部调用的 R=10000 boolean 值列表?

python - 将 CuPy CUDA 设备指针传递给 pybind11

python - 使用 pybind11 从 C++ 反序列化 Python 中的 protobuf 缓冲区

c++ - std::abs 可以在 constexpr 函数中使用,但前提是它是模板化的。为什么?

c++ - std::string 常量的正确习语?