【发布时间】:2009-06-30 08:28:39
【问题描述】:
我正在编写 python 脚本并在 Makefile 中执行它们。 python 脚本用于处理管道中的数据。我希望 Makefile 在每次更改我的 python 脚本时执行脚本。
有人知道怎么做吗?
【问题讨论】:
我正在编写 python 脚本并在 Makefile 中执行它们。 python 脚本用于处理管道中的数据。我希望 Makefile 在每次更改我的 python 脚本时执行脚本。
有人知道怎么做吗?
【问题讨论】:
这不是很多信息,所以这个答案有点模糊。 Makefiles 的基本原理是列出每个目标的依赖关系;在这种情况下,您的目标(我们称之为 foo)取决于您的 Python 脚本(我们称之为 do-foo.py):
foo: do-foo.py
python do-foo.py > foo
现在 foo 将在 do-foo.py 更改时重新运行(当然,前提是您调用了 make)。
【讨论】:
python -m compileall 的调用将字节码编译定义为目标,以生成目标pyc/pyo 文件。
如果需要运行的脚本没有生成任何可用作目标的有用输出文件,您可以只使用一个虚拟目标:
scripts=a.py b.py c.py
checkfile=.pipeline_up_to_date
$(checkfile): $(scripts)
touch $(checkfile)
echo "Launching some commands now."
default: $(checkfile)
【讨论】:
如果您希望 Makefile 在保存后立即自动“制作”,pyinotify,它是 inotify 的包装器,可能是 Linux 下唯一的可能性。它在内核中注册以检测 FS 更改并回调您的函数。
请参阅我的previous post 关于该主题。
【讨论】: