是否可以预编译(预构建/预安装)Python C / C ++扩展?

时间:2015-07-06 16:34:53

标签: python python-c-extension

我正在使用一些大型Python项目来处理几个C / C ++扩展。目前,每次我想要在新机器上运行代码时,我必须从存储库下载所有内容,然后多次运行python setup.py install,每次扩展一次......并且假设计算机安装了一个C编译器 - 如果它没有安装,那就是另外一两步。

有没有什么方法可以预编译所有的C扩展,这样当我将存储库下载到新机器时,一切都可以直接使用而无需单独安装所有这些子组件?我知道这在不同平台上可能效果不佳(或者根本没有?)但是我们说我在64位Windows 8机器上预编译并想在另一个64位Windows 8上安装它机器 - 可能吗?如果是这样,我将如何去做呢?

1 个答案:

答案 0 :(得分:1)

有可能。您问的是Creating Built Distributions

您可以创建如下构建的分发:

python setup.py bdist

您甚至可以选择不同的格式,例如:

python setup.py bdist --format=wininst
  • zip zip文件(.zip)[默认]
  • wininst适用于Windows的自解压ZIP文件
  • msi Microsoft Installer

所有这一切都可以使用标准distutils模块。

如果您想使用更现代的方法并使用setuptools,可以为Windows构建Platform Wheels

python setup.py bdist_wheel

您可以做的最后一件事是为所有扩展程序一起创建setup.py文件。即使您安装源代码分发,您的工作也会少得多。使用构建分发,只需执行一步。