项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
技术标签
使用教程
—
环境要求
- Python 环境(README 未注明最低版本,需可运行 pip)
- pip 包管理器
- 类 Unix shell 环境(README 示例使用 echo、tr 与重定向语法)
安装与启动步骤
-
1安装 doit
用 pip 从 PyPI 安装 doit,安装后 doit 命令即可在终端使用。
pip install doit -
2创建 dodo.py
在项目目录新建 dodo.py,按 README 示例定义 task_hello 与 task_shout 两个任务。
-
3运行任务
在 dodo.py 所在目录执行 doit,自动按 file_dep 依赖顺序执行任务并生成目标文件。
doit -
4再次运行验证增量
再次执行 doit,doit 会依据文件时间戳判断任务已是最新并跳过,只重跑受影响任务。
doit
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
actions | 是 | 任务要执行的命令列表,doit 按顺序运行 | ['echo "Hello from doit" > hello.txt'] |
targets | 否 | 任务产出的文件,用于增量判断与清理 | ['hello.txt'] |
file_dep | 否 | 任务依赖的文件,依赖变化时该任务重跑 | ['hello.txt'] |
clean | 否 | 标记任务目标文件可被清理 | True |
如何确认成功
执行 doit 后目录中出现 hello.txt 与 shout.txt;再次执行时任务被判定为最新而跳过。
常见问题
Q:doit 和 make 有什么区别?
A:doit 用纯 Python 函数声明任务,不需要 Makefile 的 DSL,也不用 YAML;依赖、目标、动作都写在 dodo.py 里,可直接复用 Python 代码。
Q:第二次运行 doit 为什么没有重新执行任务?
A:doit 会缓存结果并检查 file_dep 与 targets 的时间戳,已是最新的任务自动跳过,这正是它的增量执行特性。
Q:Windows 上示例命令报错怎么办?
A:README 示例使用 echo 重定向和 tr,属于类 Unix 命令,建议在 WSL 或 Git Bash 等环境中运行。
Q:任务文件必须叫 dodo.py 吗?
A:README 的快速示例使用 dodo.py,doit 默认在该文件中发现 task_ 开头的函数并注册为任务。
注意事项
- README 未给出 Python 最低版本要求,建议使用较新的 Python 3 环境。
- 任务全部定义在 dodo.py 中,是纯 Python 函数,不需要额外 DSL 或 YAML 配置。
- 示例中的 echo、tr 属于类 Unix 命令,Windows 原生 cmd 下需替换等价命令或使用 WSL/Git Bash。
核心亮点
- 任务用 Python 声明,可直接写条件判断和循环,比 Makefile 更灵活
- 支持基于文件时间戳和自定义判断的增量执行,避免重复跑全量任务
- 内置依赖图计算与并行执行,能自动确定任务顺序并加速独立任务
不足之处
- 需要熟悉 Python 和其任务定义方式,非 Python 用户上手成本较高
- 生态和插件规模不及 Make、npm scripts 等成熟工具,社区资料相对有限
适用场景
- 数据科学项目中串联数据清洗、特征计算、训练和评估等多步流水线
- Python 项目的构建、测试、打包等重复命令自动化
- 科研计算中管理有依赖关系、需要增量重跑的计算任务
替代项目
Make、Luigi、Prefect
上一篇:node-banana
下一篇:ffmpeg-skill
同类项目推荐
n8n
开源
拖拽搭建自动化流程,轻松接入 AI 与 400+ 应用,搞定重复工作。
Fair-code workflow automation platform with native AI capabilities. Combine visual b···
EasyCLIProxyAPI
开源
图形界面一键配好 AI 代理,省去手写配置文件
A desktop GUI for CLIProxyAPI and a tool for automatically configuring popular AI ag···
puppeteer
开源
用 JavaScript 轻松操控无头浏览器,搞定自动化测试与网页抓取。
JavaScript API for Chrome and Firefox
feishu-docx
开源
让 AI 代理轻松读写飞书文档,双向转换 Markdown
Feishu/Lark Docs、Sheet、Bitable <-> Markdown | AI Agent-friendly knowledge base exp···
