Инструмент автоматизации сборки Python-проектов с задачами, связанными зависимостями, и плагинами для настройки жизненного цикла сборки.
pydoit/doit
Python-средство для запуска задач и сборки: задачи задаются обычными функциями, а уже выполненные шаги повторно не запускаются.
- Звёзды
- 2,098
- Форки
- 204
- Открытые issues
- 112
- Последний коммит
- 2 месяца назад
Что это?
doit — инструмент для управления задачами и автоматизации, похожий на make. Задачи в нём описываются обычными функциями и словарями Python, а не с помощью отдельного DSL или YAML. Задачи объявляются в файле dodo.py, а doit выполняет их с учётом зависимостей.
Инструмент отслеживает файловые зависимости и целевые файлы, кэширует результаты и пропускает задачи, входные данные которых не изменились с момента последнего запуска. Одна функция может создавать подзадачи, зависимости можно вычислять динамически с помощью calc_dep, а сами задачи — выполнять параллельно через multiprocessing или threading.
Расширять инструмент можно с помощью системы плагинов для команд, репортёров, бэкендов и загрузчиков задач. Благодаря этому в коде задач можно использовать любые библиотеки Python.
Ключевые возможности
- 01Инкрементальные сборки: повторно запускаются только задачи, у которых изменились зависимости
- 02Задачи задаются обычными функциями и словарями Python
- 03Выполнение графа задач в порядке, заданном зависимостями
- 04Параллельное выполнение через multiprocessing или threading
- 05Создание подзадач и динамических зависимостей с помощью calc_dep
- 06Система плагинов для команд, репортёров, бэкендов и загрузчиков
Сценарии использования
- Автоматизация этапов сборки проектов, которым нужна инкрементальная пересборка на основе файлов
- Оркестрация конвейеров обработки данных, написанных на Python
- Замена разрозненных shell-скриптов Python-задачами с отслеживанием версий и зависимостей
Быстрый старт
- 1
Установите doit из PyPI
pip install doit - 2
Создайте файл dodo.py с функциями задач (см. Quick Example в README)
- 3
Запустите doit в каталоге, содержащем dodo.py
doit
В подборках
Темы
Частые вопросы
- Что такое doit?
- Python-средство для запуска задач и сборки: задачи задаются обычными функциями, а уже выполненные шаги повторно не запускаются. doit — инструмент для управления задачами и автоматизации, похожий на make. Задачи в нём описываются обычными функциями и словарями Python, а не с помощью отдельного DSL или YAML. Задачи объявляются в файле dodo.py, а doit выполняет их с учётом зависимостей.
- doit можно использовать бесплатно? Какая у него лицензия?
- doit распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- doit всё ещё поддерживается?
- Обновлялся за последние 6 месяцев. Последний коммит в doit — 21 сент. 2026 г..
- Для чего можно использовать doit?
- Автоматизация этапов сборки проектов, которым нужна инкрементальная пересборка на основе файлов Оркестрация конвейеров обработки данных, написанных на Python Замена разрозненных shell-скриптов Python-задачами с отслеживанием версий и зависимостей
- Как установить doit?
- Установите doit из PyPI: pip install doit Создайте файл dodo.py с функциями задач (см. Quick Example в README) Запустите doit в каталоге, содержащем dodo.py: doit
- Где скачать doit?
- Исходный код и инструкции по установке — на GitHub: https://github.com/pydoit/doit
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
SCons — инструмент сборки на Python: он определяет, что нужно пересобрать, и запускает необходимые команды.
Быстрый кроссплатформенный запускатель задач на Go, вдохновлённый Make и настраиваемый через YAML-файл Taskfile.
Инструмент на Python для воспроизводимой сборки и развёртывания приложений из Python-дистрибутивов и других систем.
Платформа для сборки монорепозиториев с TypeScript и кодом на разных языках: кэширует неизменившиеся задачи, запускает только затронутые и интегрируется с CI.
CLI-инструмент для создания изолированных и воспроизводимых сред разработки с нужными проекту пакетами из реестра Nix — без контейнеров.