依存関係に基づくタスクとプラグインシステムで、Pythonプロジェクトのビルドライフサイクルを定義する自動化ツールです。
pydoit/doit
タスクを通常のPython関数として定義でき、最新の状態にある処理をスキップするPython製タスクランナー兼ビルドツール。
- スター
- 2,099
- フォーク
- 204
- 未解決の Issue
- 112
- 最終コミット
- 19 時間前
これは何?
doitはmakeに似たタスク管理・自動化ツールですが、専用のDSLやYAMLではなく、通常のPython関数と辞書でタスクを記述します。タスクはdodo.pyファイルで宣言し、doitが依存関係に沿った順序で実行します。
ファイルの依存関係とターゲットを追跡して結果をキャッシュし、前回の実行以降に入力が変わっていないタスクはスキップします。1つの関数からサブタスクを生成したり、calc_depで依存関係を動的に計算したり、multiprocessingやthreadingを使って並列実行したりできます。
コマンド、レポーター、バックエンド、タスクローダーに対応するプラグインアーキテクチャで拡張できるため、タスク内のPythonコードから任意のライブラリを利用できます。
主な機能
- 01依存関係が変更されたタスクだけを再実行するインクリメンタルビルド
- 02通常のPython関数と辞書でタスクを定義
- 03タスクグラフの依存関係に沿った実行
- 04multiprocessingまたはthreadingによる並列実行
- 05サブタスクの生成とcalc_depによる動的な依存関係
- 06コマンド、レポーター、バックエンド、ローダー向けのプラグインシステム
ユースケース
- ファイル単位のインクリメンタルな再ビルドが必要なプロジェクトのビルド手順を自動化
- Pythonで記述したデータ処理パイプラインのオーケストレーション
- 場当たり的なシェルスクリプトを、バージョン管理できる依存関係対応のPythonタスクに置き換え
クイックスタート
- 1
PyPIからdoitをインストールする
pip install doit - 2
タスク関数を含むdodo.pyファイルを作成する(READMEのQuick Exampleを参照)
- 3
dodo.pyがあるディレクトリでdoitを実行する
doit
収録されている特集
トピック
よくある質問
- doit とは?
- タスクを通常のPython関数として定義でき、最新の状態にある処理をスキップするPython製タスクランナー兼ビルドツール。 doitはmakeに似たタスク管理・自動化ツールですが、専用のDSLやYAMLではなく、通常のPython関数と辞書でタスクを記述します。タスクはdodo.pyファイルで宣言し、doitが依存関係に沿った順序で実行します。
- doit は無料で使えますか?ライセンスは?
- doit は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- doit は今もメンテナンスされていますか?
- 活発にメンテナンス中。doit の最終コミットは 2026年11月7日 です。
- doit は何に使えますか?
- ファイル単位のインクリメンタルな再ビルドが必要なプロジェクトのビルド手順を自動化 Pythonで記述したデータ処理パイプラインのオーケストレーション 場当たり的なシェルスクリプトを、バージョン管理できる依存関係対応のPythonタスクに置き換え
- doit のインストール方法は?
- PyPIからdoitをインストールする: pip install doit タスク関数を含むdodo.pyファイルを作成する(READMEのQuick Exampleを参照) dodo.pyがあるディレクトリでdoitを実行する: doit
- doit はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/pydoit/doit
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
SConsは、再ビルドが必要な対象を判定し、ビルドに必要なコマンドを実行するPython製のソフトウェア構築ツールです。
Makeに着想を得た、Taskfile YAMLで設定する高速かつクロスプラットフォームなGo製タスクランナー。
Pythonディストリビューションなどからアプリケーションを再現可能な形で組み立て、デプロイするツール。
TypeScriptや複数言語のコードベース向けのモノレポビルドプラットフォーム。変更のないタスクをキャッシュし、影響を受けるタスクだけを実行してCIと連携します。
コンテナを使わず、Nix Registryのプロジェクト固有パッケージで分離された再現性の高い開発シェルを作成するCLIツール。