doit

用 Python 定义任务依赖,一条命令自动按序执行

开源 free 自动化工作流
访问官网 ↗ GitHub ↗ 文档 ↗
GitHub 星标 ★ 2095
维护状态 较活跃
是否开源 是
定价模式 free

项目预览

项目数据

分类自动化工作流
开发团队pydoit
所属国家
官网地址http://pydoit.org
定价模式free
价格说明开源免费,采用MIT许可证
访问状态
是否开源是
开源协议MIT
主要语言Python
技术栈/模型build-automation,build-system,build-tool,cli,data-pipeline,data-science,hacktoberfest,python,task-runner,workflow,workflow-automation,workflow-management
GitHub 星标★ 2095
30天Star增速
HF 下载量
上线时间2014-02-14 00:00:00
代码更新—
仓库体积—
本站数据更新—
维护状态较活跃
中文支持
访问方式
移动端支持
综合评分
收录时间2026-10-20
浏览次数0

项目介绍

doit 是一个基于 Python 的 CLI 任务管理与自动化工具,核心思路是把构建、数据处理、测试等重复性工作定义成任务,再通过命令行按依赖关系自动执行。它解决的问题是:当项目里脚本越堆越多、彼此存在先后依赖、还需要增量执行时,手工串联命令既容易出错也难以维护。doit 用 Python 文件声明任务及其依赖、目标和动作,自动计算执行顺序,支持基于文件时间戳或自定义判断的增量执行,只重跑受影响的任务。它提供任务发现、依赖图、并行执行、失败中断与继续、任务参数化和命令行查询等能力,还能把任务组织成可复用的工作流,适合数据流水线、构建自动化和科研计算等场景。相比 Make,doit 直接用 Python 表达逻辑,跨平台且无需学习 Makefile 语法,对 Python 项目更自然。

Star 增长趋势

本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整

正在加载星标数据…

技术标签

使用教程

—

难度:入门 约 10 分钟 部署方式:命令行工具 4 步

环境要求

  • Python 环境(README 未注明最低版本,需可运行 pip)
  • pip 包管理器
  • 类 Unix shell 环境(README 示例使用 echo、tr 与重定向语法)

安装与启动步骤

  1. 1安装 doit

    用 pip 从 PyPI 安装 doit,安装后 doit 命令即可在终端使用。

    pip install doit
  2. 2创建 dodo.py

    在项目目录新建 dodo.py,按 README 示例定义 task_hello 与 task_shout 两个任务。

  3. 3运行任务

    在 dodo.py 所在目录执行 doit,自动按 file_dep 依赖顺序执行任务并生成目标文件。

    doit
  4. 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···

★ 207984 2026-08-10
EasyCLIProxyAPI 开源

图形界面一键配好 AI 代理,省去手写配置文件

A desktop GUI for CLIProxyAPI and a tool for automatically configuring popular AI ag···

★ 3030 2026-09-22
puppeteer 开源

用 JavaScript 轻松操控无头浏览器,搞定自动化测试与网页抓取。

JavaScript API for Chrome and Firefox

★ 95723 2026-08-10
feishu-docx 开源

让 AI 代理轻松读写飞书文档,双向转换 Markdown

Feishu/Lark Docs、Sheet、Bitable <-> Markdown | AI Agent-friendly knowledge base exp···

★ 267 2026-08-09