我逐漸遠(yuǎn)離了 Makefile锣夹,轉(zhuǎn)而用每個(gè)項(xiàng)目特制的 make.py 完成類似的任務(wù)拦焚。同時(shí)也不希望寫(xiě)很多命令行參數(shù)解析歪架,因?yàn)橐脖容^厭煩了。
所以我現(xiàn)在的選擇多半是用 ipython 的 Shell夺鲜,通過(guò)交互式命令行喚起腳本里特定的函數(shù)來(lái)完成任務(wù)。
這個(gè)想法的第一個(gè)問(wèn)題就是當(dāng)前目錄需要是一個(gè) python 包呐舔,不然 import make 是無(wú)效的币励。為此我需要?jiǎng)?chuàng)建一個(gè)空的 __init__.py 文件,看起來(lái)有點(diǎn)奇怪珊拼。
第二個(gè)問(wèn)題是 import make 這個(gè)動(dòng)作是有緩存的食呻,只要 Shell 不重啟,make.py 的修改不能及時(shí)反饋到交互式命令行里。為此我找到了 hotreload 這個(gè)庫(kù):
from hotreload import Loader
make = Loader('make.py')
這樣調(diào)用 make 模塊的函數(shù)就是無(wú)緩存的了仅胞。而且它沒(méi)了 import make 這個(gè)動(dòng)作浪感,也不需要奇奇怪怪的 __init__.py 了。
我認(rèn)為這個(gè)過(guò)程也適用于其他的開(kāi)發(fā)過(guò)程饼问,只是還沒(méi)有這樣的體驗(yàn)影兽。