有人为我们设置了 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/