就我而言,我有requirements目标,该目标安装了所需的Python软件包test,并运行了测试,并取决于先前的测试。
安装依赖项是一项很长的操作,我希望仅在requirements.txt更改时才执行。我该如何实现?
这是我现在拥有的Makefile的简化示例:
.PHONY: test requirements
requirements: requirements.txt
pip install -r $<
test: tests/ | requirements
py.test $^
Run Code Online (Sandbox Code Playgroud)
正如@user1034749指出的,Make会比较文件的修改时间。如果你想让它知道requirements.txt自上次安装以来修改时间是什么时候,你必须给它一个修改时间与上次安装时间相同的文件,以便它可以比较两者。换句话说,您必须有一个虚拟文件,并在执行安装时修改它。你可以随意称呼它,但我将其称为“安装”:
.PHONY: test
installation: requirements.txt
pip install -r $<
touch $@
test: tests/ | installation
py.test $^
Run Code Online (Sandbox Code Playgroud)