Рубрики
Без рубрики

Почему вы должны добавить Makefile в свой проект Python

История Есть цитата, которая идет как: «Я выбираю ленивый человек, чтобы сделать трудную работу. Потому что … Помечено Makefile, Python, советы.

Есть цитата, которая идет, как, «Я выбираю ленивый человек, чтобы сделать жесткую работу. Потому что ленивый человек найдет простой способ сделать это ». по Билл Гейтс И я думаю, что когда он упомянул ленивых людей, он также включал в себя в том же бассейне. Вы можете спросить себя, почему я говорю это о себе. Причина в том, что со временем я обнаружил, что это то же самое снова и снова, и я уверен, что вы также были пойманы в этой повторяющейся петле, прежде чем вы, возможно, не знаете об этом.

При создании и работе на новом Python или связанном проекте, я бы повторю то же самое и снова. Например:

  • Создание виртуальной среды Python, установите все пакеты, которые мне нужно в него и очистить коды Python Byte и другие артефакты. virtualenv .venv && Источник .VENV/BIN/ACTIVATE && PIP Установите.
  • Запустить кодовые лепки и форматтеры, как я разрабатываю или перед толканием Github Отказ Black -l 90 && Isort -irc. && flake8.
  • Запуск неисполнительно и генерирующая документация (если таковая имеется). pytest -sv. && sphinx-apidoc. -o ./docs. -f тесты

Весь пример, который я перечислял выше, предполагает, что вы знаете, какую команду Shell для выполнения и когда в большинстве случаев это может быть громоздким или утомительным для юниоров.

Введите Gnu-make В этом посте я покажу вам, как вы можете использовать использование Makefile Для автоматизации, обеспечение всех вкусностей размещены в одном месте и никогда не нужно запоминать все команды оболочки.

TL; доктор

При создании любого проекта программирования используют использование Makefile для утомительной работы.

Ниже приведен пример универсального Makefile Я использовал. Я обычно удаляю части, которые мне не нужно, а затем поместить его в корню моего проекта:

Бег сделать Без каких-либо целей генерирует подробный доступ для использования. Я не буду проходить через Makefile Как хорошо задокументировано и самоуверенно.

$ make
python3 -c "$PRINT_HELP_PYSCRIPT" <  Makefile
Please use `make ` where  is one of

build-image          Build docker image from local Dockerfile.
build-cached-image   Build cached docker image from local Dockerfile.
bootstrap            Installs development packages, hooks and generate docs for development
dist                 Builds source and wheel package
dev                  Install the package in development mode including all dependencies
dev-venv             Install the package in development mode including all dependencies inside a virtualenv (container).
install              Check if package exist, if not install the package
venv                 Create virtualenv environment on local directory.
run-in-docker        Run example in a docker container
clean                Remove all build, test, coverage and Python artefacts
clean-build          Remove build artefacts
clean-docs           Remove docs/_build artefacts, except PDF and singlehtml
clean-pyc            Remove Python file artefacts
clean-test           Remove test and coverage artefacts
clean-docker         Remove docker image
lint                 Check style with `flake8` and `mypy`
checkmake            Check Makefile style with `checkmake`
formatter            Format style with `black` and sort imports with `isort`
install-hooks        Install `pre-commit-hooks` on local directory [see: https://pre-commit.com]
pre-commit           Run `pre-commit` on all files
coverage             Check code coverage quickly with pytest
coveralls            Upload coverage report to coveralls.io
test                 Run tests quickly with pytest
view-coverage        View code coverage
changelog            Generate changelog for current repo
complete-docs        Generate a complete Sphinx HTML documentation, including API docs.
docs                 Generate a single Sphinx HTML documentation, with limited API docs.
pdf-doc              Generate a Sphinx PDF documentation, with limited including API docs. (Optional)

Пример

В одном из моих проектов здесь У меня есть пример.

make run-bootstrap

При выполнении команды выше будет:

  • Создайте изображение Docker на основе пользователя и текущего рабочего каталога. Например: mmphego/face_detection.
  • Загрузите модели, которые используют OpenVino для вывода.
  • Добавляет текущее имя хоста/имена пользователя в список, которым разрешено делать подключения к X/графическому серверу и наконец,
  • Запустите приложение внутри предварительно построенного образа докера.

Далее ваше обучение:

Если вы нашли этот пост полезным или не уверены в чем-то, оставьте комментарий или охватите @ Twitter/Mphomphego

Этот пост был вдохновлен этими сообщениями ниже:

Оригинал: “https://dev.to/mmphego/why-you-should-add-makefile-into-your-python-project-20j2”