And*_*kin 5 pip pypi bazel pybind11
我有一个混合 C++/Python 项目。它使用pybind11包装 Python 的 C++ 代码,并使用 bazel来构建解决方案。我对这个技术栈非常满意。安装 C++ 编译器、Python 发行版和 bazel 后,bazel run命令即可下载依赖项、构建并运行整个 C++/absl/Python/numpy 集团。
但为了让用户的事情变得更简单,我想将我的代码打包为 PyPI 包,以便可以使用pip install. 我希望该包是跨平台的,可以在 Windows、Linux 和 MacOS 上运行。
在生成新版本时,建立构建、打包并将所有内容上传到 PyPI 的管道的最清晰方法是什么?
这不是一个完美的答案,但受grpc 方法的启发,我已经在这个库中成功地使用了它。诀窍是通过 bazelisk.py 和 setup.py 调用 bazel,复制 bazel 输出文件,然后使用 pyproject.toml 文件打包 Python。
步骤(假设您的 bazel 代码已经构建):
.github/workflows/*.yml中的文件),为所有目标平台构建 C++ 二进制文件,因此用户无需这样做。您可以将这些上传到 pip。使用矩阵构建来覆盖您目标的每个 Python 版本。您还可以为想要自己构建代码的任何人上传 sdist 构建。*此步骤可以改进。