如何在setup.py中运行Makefile?

2024-06-28 11:02:29 发布

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

我需要使用它自己的构建机制编译ICU。因此,问题是:

如何从setup.py运行生成文件?显然,我只希望它在构建过程中运行,而不是在安装时运行。


Tags: 文件py过程setup机制icu
3条回答

如果要构建python扩展,可以使用distutils/setuptools扩展。例如:

from setuptools import Extension
# or:
# from distutils.extension import Extension
setup(...
      ext_modules = [Extension("pkg.icu",
                               ["icu-sqlite/icu.c"]),
                    ]
      )

构建扩展有很多选项,请参见文档:http://docs.python.org/distutils/setupscript.html

可以使用distutils构建C库(请参见distutils.core.setup的libraries参数),但可能必须复制Makefile中已有的选项,因此最简单的方法可能是按照其他应答中的说明扩展install命令,并使用子流程模块调用make。

我通常使用的方法是重写有问题的命令:

from distutils.command.install import install as DistutilsInstall

class MyInstall(DistutilsInstall):
    def run(self):
        do_pre_install_stuff()
        DistutilsInstall.run(self)
        do_post_install_stuff()

...

setup(..., cmdclass={'install': MyInstall}, ...)

我花了很长时间才从distutils文档和源代码中找到答案,所以我希望它能帮您省去痛苦。

注意:您还可以使用这个cmdclass参数添加新命令。

相关问题 更多 >