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