05.16 Пакетирование и деплоймент
Зависимости:
- Полные (когда нужен один модуль, а ставится несколько) / прямые (только нужные модули)
pip list --not-required — только прямые
- Эксплуатационные (нужны для работы) / сборочные (нужны для разработки) / мусор (поставились случайно)
Использование pipenv:
install
install -d
pip install для мусора
pipenv --rm + pipenv update + pipenv update -d для избавления от мусора
Вариант — два файла requirements.txt со сборочными и установочными зависимостями (pip install -r …)
Сборка бинарного дистрибутива:
Использование setuptools (на примере GradeProject2021)
Настройка pyproject.toml и выбор setuptools
- Указание сборочных зависимостей
Файл setup.cfg
- Создание бинарного дистрибутива wheel
- Указание эксплуатационных зависимостей
install_requires =
- Указание дополнительных данных пакета
include_package_data = True и [options.package_data]
- Задание пускового сценария
[options.entry_points]
- Указание эксплуатационных зависимостей
- Создание бинарного дистрибутива wheel
Где хранить дополнительные данные?
Не в / ☺
Не в /usr/share ☺
Не в /usr/lib/python3
- ⇒ нельзя забивать константу-полный путь
Не в . ☺
- ⇒ нельзя использовать относительный путь
- В составе модуля
⇒ формировать путь до дополнительных файлов в каталоге с модулем
os.path.dirname(__file__) + …
Создание архива с исходниками:
- Файлы по умолчанию
Файл MANIFEST.in
Проверка дистрибутивов:
Бинарного: установка .whl в чистый venv — должно сразу заработать!
Исходного: распаковка .tar.gz в чистый venv, установка сборочных зависимостей — должно собираться!
Д/З
Доведение прошлого Д/З до состояний (1), (2)
- Скопировать решение прошлого Д/З в новый каталог (согласно правилам)
- Довести его до состояния работоспособности бинарного и исходного дистрибутивов