用Makefile执行Python脚本

13 投票
3 回答
33573 浏览
提问于 2025-04-15 12:35

我正在写Python脚本,并在一个叫Makefile的文件里运行它们。这个Python脚本是用来处理数据的,像流水线一样。我希望每次我修改了Python脚本后,Makefile都能自动执行这个脚本。

有没有人知道怎么做到这一点?

3 个回答

0

如果你想在保存Makefile后自动执行“make”命令,可以使用pyinotify。这个工具是inotify的一个封装,主要用于Linux系统。它会向系统内核注册,以便监测文件系统的变化,并在检测到变化时调用你指定的函数。

你可以查看我在这个话题上的之前的帖子

4

如果你要运行的脚本没有生成任何可以用作目标的有用输出文件,那你可以使用一个虚拟的目标:

scripts=a.py b.py c.py
checkfile=.pipeline_up_to_date

$(checkfile): $(scripts)
    touch $(checkfile)
    echo "Launching some commands now."

default: $(checkfile)
22

这段信息不太多,所以回答有点模糊。Makefile的基本原则是列出每个目标的依赖关系;在这个例子中,我们的目标(我们称它为foo)依赖于你的Python脚本(我们称它为do-foo.py):

foo: do-foo.py
    python do-foo.py > foo

现在,只要do-foo.py发生变化,foo就会在你调用make的时候重新运行。

撰写回答