Перейти к основному содержимому

Подготовка проекта к обработке в конвейере 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
осторожно

Не забудьте зафиксировать изменения и отправить их в удаленный репозиторий!

Состояние репозитория подготовки к CI