Подготовка проекта к обработке в конвейере CI/CD
Компиляция Python
Основано на статье "Компиляция Python".
В нашем рабочем процессе мы захотим собирать бинарники. Так и сделаем это с помощью PyInstaller.
PyInstaller упаковывает приложения Python в автономные исполняемые файлы в Windows, GNU / Linux, Mac OS X, FreeBSD, Solaris и AIX.
Устанавливается через pip:
pip install pyinstaller
После установки для создания исполняемого файла достаточно выполнить команду:
pyinstaller <имя_файла>.py
В результате будет создано:
*.spec– файл спецификации (используется для ускорения будущих сборок приложения, связи файлов данных с приложением, для включения.dllи.soфайлов, добавление в исполняемый файл параметров runtime-а Python);build/– директория с метаданными для сборки исполняемого файла;dist/– директория, содержащая все зависимости и исполняемый файл.
Статический анализатор кода
Pylint - это статический анализатор кода для Python 2 или 3. Последняя версия поддерживает Python 3.7.2 и выше.
Pylint анализирует ваш код, фактически не запуская его. Он проверяет наличие ошибок, применяет стандарт кодирования, ищет запахи кода и может вносить предложения о том, как можно реорганизовать код.
Для использования из командной строки pylint устанавливается с:
pip install pylint
Запустить тестирование кода можно следующим образом:
pylint calculator.py
pip freeze
В наших рабочих процессах нам потребуется разворачивать изолированные среды Python. А для этого необходимо знать какие пакеты должны в ней находиться. Поэтому выведем установленные пакеты в из нашего локального окружения в формате требований в текстовый документ requirements.txt:
pip freeze > requirements.txt
В requirements.txt (у вас может быть версии более актуальные):
altgraph==0.17.3
astroid==2.12.12
autopep8==1.7.0
dill==0.3.5.1
isort==5.10.1
lazy-object-proxy==1.7.1
macholib==1.16.2
mccabe==0.7.0
platformdirs==2.5.2
pycodestyle==2.9.1
pyinstaller==5.5
pyinstaller-hooks-contrib==2022.10
pylint==2.15.4
toml==0.10.2
tomli==2.0.1
tomlkit==0.11.5
wrapt==1.14.1
В итоге репозиторий выглядеть должен следу ющим образом:
awesome-project
├── calculator.py
├── README.md
├── .gitignore
├── calculator_tests.py
└── requirements.txt
Не забудьте зафиксировать изменения и отправить их в удаленный репозиторий!
