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