【发布时间】:2021-04-28 19:02:52
【问题描述】:
我正在尝试创建和分发(使用 pip)具有 Python 代码的 Python 包,以及使用 Pybind11(使用 Visual Studio 2019)编译为 .pyd 文件的 C++ 代码。我还想包含 .pyi 存根文件,用于 VScode 和其他编辑器。我找不到太多关于正确执行此操作的文档。
我希望喜欢能够像往常一样通过 pip 安装包,并像普通 Python 包一样编写 from mymodule.mysubmodule import myfunc 等,包括自动完成、类型注释、VScode 智能感知等使用.pyi 文件我会写。
我的 C++ 代码位于多个 cpp 和头文件中。它使用了一些标准库,和一些外部库(例如boost)。它定义了一个模块和两个子模块。我希望能够在 Windows 和 Linux 以及 x86 和 x64 上分发它。我目前的目标是 Python 3.9 和 c++17 标准。
我应该如何构建和分发这个包?我是否包含 c++ 源文件,并创建一个类似于Pybind11 example 的 setup.py?如果是这样,我如何包含外部库?以及如何构建 .pyi 存根文件?这是否意味着试图安装我的包的人也需要一个 c++ 编译器?
或者,我应该将我的 c++ 编译为每个平台和架构的 .pyd/.so 文件吗?如果是这样,有没有办法指定通过 pip 安装哪个?再说一遍,我将如何构建 .pyi 存根?
【问题讨论】:
标签: python c++ pybind11 python-extensions