8

我注意到几个成熟的 Python 库已经为大多数架构(Win32/Win-amd64/MacOS)和 Python 版本预编译了版本。为不同环境交叉编译扩展的标准方法是什么?葡萄酒?虚拟机?众包?

4

3 回答 3

7

我们使用虚拟机和Hudson服务器。

对于我们支持的每个架构,我们都有一个虚拟机(通常编译不会拉伸分配给它们的资源,所以虚拟机就可以了)。我猜每个虚拟机的配置都可以由 Puppet 或 Chef 之类的东西来管理,以确保它是一个合适的构建环境。如果您有硬件,您当然可以使用真机,但您要避免使用人们实际使用的机器(例如开发人员工作站)。

然后,我们使用 Hudson 中的多配置项目来设置构建矩阵。构建矩阵允许我们(只需单击一下)在多种架构上构建多个 python 版本,但理论上您可以构建您可以在矩阵中设置的所有组合。当然,您可以改用 Jenkins。

于 2012-04-12T23:59:01.013 回答
0

SWIG 为多平台代码生成提供了途径。

于 2012-01-09T07:48:43.057 回答
0

我所有的 Python 扩展模块都是 C++,而不是 C,所以我使用 boost Python。当我需要支持不同的操作系统时,我也会使用虚拟机。Boost 的 bjam 构建驱动程序允许您使用不同版本的 Python(2.6、2.7)构建不同版本的 g++ 和其他各种东西。如果我有一个非常流行的扩展模块并且很多人想在我没有的平台上使用它,那么我会确保我的代码非常便携(无论如何应该是)并提供有关我如何构建它的说明使用 bjam 为不同的 Python 版本等使用几个不同的示例。这足以让他们开始。如果这可行,您可以要求他们贡献他们的构建,以便其他人可以使用它们(当然不受您的支持)。

于 2012-04-11T11:47:41.800 回答