Makefile, Giga, Python. Code Format, Tools
https://giga.chat/link/gcsObBTGeV
Makefile — это инструмент, традиционно используемый в Unix-системах для автоматизации процессов сборки и выполнения различных задач.
В контексте Python-разработки Makefile помогает автоматизировать часто повторяющиеся операции, такие как установка зависимостей,
запуск тестов, очистка временной информации и подготовка документаций.
Зачем нужен Makefile для Python?
Разработчики нередко сталкиваются с необходимостью выполнения одних и тех же задач снова и снова. Например:
- Установка зависимостей (
pip install -r requirements.txt) - Запуск тестов (
pytest) - Генерация документации (
sphinx-build) - Очистка временных файлов (
find . -name "__pycache__" -delete)
Разработчики нередко сталкиваются с необходимостью выполнения одних и тех же задач снова и снова. Например:
pip install -r requirements.txt)pytest)sphinx-build)find . -name "__pycache__" -delete)Все эти задачи можно собрать в Makefile, сделав их доступными через простые команды вида make install, make test, make clean и т.д.
Как составить хороший Makefile для Python?
Makefile состоит из заданий (targets), каждое из которых связано с набором команд. Пример простого Makefile для Python-проекта:
.PHONY: help install test clean docs
help:
@echo "Available commands:"
@echo " install - Install dependencies"
@echo " test - Run unit tests"
@echo " clean - Remove temporary files"
@echo " docs - Generate documentation"
install:
pip install -r requirements.txt
test:
pytest
clean:
find . -type d -name "__pycache__" -exec rm -rf {} +
find . -type f -name "*.py[cod]" -delete
docs:
sphinx-build -b html docs/source docs/build/html
Makefile состоит из заданий (targets), каждое из которых связано с набором команд. Пример простого Makefile для Python-проекта:
.PHONY: help install test clean docs
help:
@echo "Available commands:"
@echo " install - Install dependencies"
@echo " test - Run unit tests"
@echo " clean - Remove temporary files"
@echo " docs - Generate documentation"
install:
pip install -r requirements.txt
test:
pytest
clean:
find . -type d -name "__pycache__" -exec rm -rf {} +
find . -type f -name "*.py[cod]" -delete
docs:
sphinx-build -b html docs/source docs/build/htmlОбъяснение примеров:
- help: Первая цель должна показывать список доступных команд.
- install: Устанавливает зависимости из файла
requirements.txt. - test: Запускает тесты с помощью
pytest. - clean: Очищает временные файлы, созданные при компиляции и тестировании.
- docs: Генерирует HTML-документацию с помощью Sphinx.
requirements.txt.pytest.Совет по созданию Makefile:
- Четкие названия: Выбирайте информативные и однозначные названия целей.
- Краткость: Сделайте команды короткими и выразительными.
- Последовательность: Располагайте задачи в логическом порядке.
- Зависимости: Используйте зависимости между целями, если одна задача должна зависеть от результатов другой.
Распространённая практика:
Часто встречающиеся цели в Makefile для Python-проектов:
- install: Установка зависимостей.
- dev_install: Установка зависимостей для разработки.
- format: Форматирование кода (например, с помощью Black или Ruff).
- lint: Запуск линтеров (например, Flake8 или Ruff).
- test: Запуск тестов (например, с помощью Pytest).
- coverage: Генерация отчёта о покрытии кода тестами.
- clean: Очистка временных файлов.
- dist: Пакетирование проекта (создание колес, архива).
Часто встречающиеся цели в Makefile для Python-проектов:
Заключение:
Makefile — это замечательный инструмент для автоматизации рутинных задач в Python-разработке.
Он позволяет сэкономить массу времени и усилий, сведя регулярные операции к простым командам вида make <target>.
Созданный однажды, такой файл надолго останется полезным ресурсом в любом крупном проекте.
---------------------------
Makefile — это замечательный инструмент для автоматизации рутинных задач в Python-разработке.
Он позволяет сэкономить массу времени и усилий, сведя регулярные операции к простым командам вида make <target>.
Созданный однажды, такой файл надолго останется полезным ресурсом в любом крупном проекте.
---------------------------
Зачем использовать Makefile в Python?
Рассмотрим частые действия, которые разработчики выполняют ежедневно:
- Установка зависимостей (
pip install -r requirements.txt); - Запуск тестов (
pytest); - Генерация документации (
sphinx-build); - Очистка временного мусора (
rm -rf __pycache__).
Рассмотрим частые действия, которые разработчики выполняют ежедневно:
pip install -r requirements.txt);pytest);sphinx-build);rm -rf __pycache__).Каждая из этих задач может быть выполнена отдельно, но зачем тратить время на постоянное переключение между терминалом и командой,
если можно воспользоваться удобной системой Makefile?
Пример простого Makefile для Python:
Давайте создадим простой Makefile, который автоматизирует наши типичные задачи:
.PHONY: help install test clean format lint docs
help:
@echo "Usage:"
@echo " make install Install dependencies"
@echo " make test Run unit tests"
@echo " make clean Clean generated files"
@echo " make format Format code using Black"
@echo " make lint Lint code using Ruff"
@echo " make docs Build documentation"
install:
pip install -r requirements.txt
test:
pytest
clean:
find . -type d -name "__pycache__" -exec rm -rf {} +
find . -type f -name "*.py[cod]" -delete
format:
black .
lint:
ruff .
docs:
sphinx-build -b html docs/source docs/build/html
Давайте создадим простой Makefile, который автоматизирует наши типичные задачи:
.PHONY: help install test clean format lint docs help: @echo "Usage:" @echo " make install Install dependencies" @echo " make test Run unit tests" @echo " make clean Clean generated files" @echo " make format Format code using Black" @echo " make lint Lint code using Ruff" @echo " make docs Build documentation" install: pip install -r requirements.txt test: pytest clean: find . -type d -name "__pycache__" -exec rm -rf {} + find . -type f -name "*.py[cod]" -delete format: black . lint: ruff . docs: sphinx-build -b html docs/source docs/build/html
Объяснение примера:
- help: первая цель должна выводить список доступных команд.
- install: устанавливает зависимости из файла
requirements.txt. - test: запускает тесты с помощью
pytest. - clean: очищает временные файлы, созданные при компиляции и тестировании.
- format: форматирует код с помощью Black.
- lint: проверяет код с помощью Ruff.
- docs: генерирует HTML-документацию с помощью Sphinx.
requirements.txt.pytest.Совет по созданию Makefile:
- Называйте цели понятно и однозначно.
- Сокращайте команды до минимума, оставляя лаконичные и эффективные действия.
- Расположите задачи в логическом порядке.
- Определите зависимости между задачами, если одна зависит от другой.
Распространённые задачи в Makefile для Python:
- install: установка зависимостей.
- dev_install: установка зависимостей для разработки.
- format: форматирование кода.
- lint: проверка стиля и качества кода.
- test: запуск тестов.
- coverage: отчёт о покрытии кода тестами.
- clean: очистка временных файлов.
- dist: создание распределительного пакета.
Заключение:
Makefile — это превосходный помощник для разработчиков Python, позволяющий экономить время и силы,
сводя повторяющиеся действия к короткой команде make <task>.
Однажды созданный, такой файл навсегда остается ценным ресурсом для каждого крупного проекта.
Makefile — это превосходный помощник для разработчиков Python, позволяющий экономить время и силы,
сводя повторяющиеся действия к короткой команде make <task>.
Однажды созданный, такой файл навсегда остается ценным ресурсом для каждого крупного проекта.
Комментариев нет:
Отправить комментарий