在我的情况下,我有requirements
目标,它安装所需的Python软件包和test
,它运行测试并依赖于之前的软件包。
安装依赖项是一项很长的操作,我希望它只在requirements.txt
更改时执行。我怎样才能做到这一点?
这是Makefile的简化示例,我现在有:
.PHONY: test requirements
requirements: requirements.txt
pip install -r $<
test: tests/ | requirements
py.test $^
答案 0 :(得分:3)
正如@ user1034749指出的那样,Make会比较文件的修改时间。如果您希望它知道自上次安装以来requirements.txt
何时被修改,您必须为其提供一个文件,其修改时间与上次安装的时间相同,以便它可以比较两者。换句话说,您必须具有虚拟文件并在执行安装时对其进行修改。你可以把它叫做任何你喜欢的东西,但我会称之为&#34;安装&#34;:
.PHONY: test
installation: requirements.txt
pip install -r $<
touch $@
test: tests/ | installation
py.test $^