【问题标题】:Python Script Executed with Makefile使用 Makefile 执行的 Python 脚本
【发布时间】:2009-06-30 08:28:39
【问题描述】:

我正在编写 python 脚本并在 Makefile 中执行它们。 python 脚本用于处理管道中的数据。我希望 Makefile 在每次更改我的 python 脚本时执行脚本。

有人知道怎么做吗?

【问题讨论】:

    标签: python makefile


    【解决方案1】:

    这不是很多信息,所以这个答案有点模糊。 Makefiles 的基本原理是列出每个目标的依赖关系;在这种情况下,您的目标(我们称之为 foo)取决于您的 Python 脚本(我们称之为 do-foo.py):

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

    现在 foo 将在 do-foo.py 更改时重新运行(当然,前提是您调用了 make)。

    【讨论】:

    • 我没有在我的脚本中正确定义对我的 .py 文件的依赖。谢谢
    • 请注意,即使问题已有效地自行解决,我仍想扩展此答案。您还可以使用python -m compileall 的调用将字节码编译定义为目标,以生成目标pyc/pyo 文件。
    【解决方案2】:

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

    scripts=a.py b.py c.py
    checkfile=.pipeline_up_to_date
    
    $(checkfile): $(scripts)
        touch $(checkfile)
        echo "Launching some commands now."
    
    default: $(checkfile)
    

    【讨论】:

      【解决方案3】:

      如果您希望 Makefile 在保存后立即自动“制作”,pyinotify,它是 inotify 的包装器,可能是 Linux 下唯一的可能性。它在内核中注册以检测 FS 更改并回调您的函数。

      请参阅我的previous post 关于该主题。

      【讨论】:

      • 很高兴知道!但我想我的问题有点不清楚,它更像是一个 makefile 问题。还是谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多