如何为Python的不同OS /版本编译Python C/C++扩展?

2024-05-08 12:43:39 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 方法版本标准环境体系结构macoswin交叉
3条回答

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

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

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

然后,我们使用Hudson中的多配置项目来设置构建矩阵。构建矩阵允许我们(只需单击一次)在多个体系结构上构建多个python版本,但理论上您可以构建矩阵中设置的所有组合。你当然可以用詹金斯代替。在

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

相关问题 更多 >