如何在setup.py中运行Makefile?

Geo*_*lly 32 python distutils

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

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

Wal*_*ter 38

我通常使用的方法是覆盖有问题的命令:

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}, ...)
Run Code Online (Sandbox Code Playgroud)

这花了我很长时间才从distutils文档和来源中找出来,所以我希望它可以为你节省痛苦.

注意:您还可以使用此cmdclass参数添加新命令.

  • 在阅读完这个答案之后,我已经实现了类似的功能并且运行良好(https://github.com/Turbo87/py-xcsoar/blob/master/setup.py).代码运行一个Makefile,创建两个可执行文件,修改后的setup.py甚至可以将这些可执行文件安装到系统上.同样可以安装任何类型的库. (7认同)
  • 非常感谢!这就是我需要的.我还写了一个简单的setup.py来构建hostapd.希望这对于在这个问题上挣扎的人有用.https://github.com/anakin1028/hostapd_binder/blob/master/setup.py (2认同)