我逐渐远离了 Makefile,转而用每个项目特制的 make.py 完成类似的任务。同时也不希望写很多命令行参数解析,因为也比较厌烦了。
所以我现在的选择多半是用 ipython 的 Shell,通过交互式命令行唤起脚本里特定的函数来完成任务。
这个想法的第一个问题就是当前目录需要是一个 python 包,不然 import make 是无效的。为此我需要创建一个空的 __init__.py 文件,看起来有点奇怪。
第二个问题是 import make 这个动作是有缓存的,只要 Shell 不重启,make.py 的修改不能及时反馈到交互式命令行里。为此我找到了 hotreload 这个库:
from hotreload import Loader
make = Loader('make.py')
这样调用 make 模块的函数就是无缓存的了。而且它没了 import make 这个动作,也不需要奇奇怪怪的 __init__.py 了。
我认为这个过程也适用于其他的开发过程,只是还没有这样的体验。