Юрий Благовещенский (Рамблер) @ Moscow Python Meetup 66 "Ещё раз poetry vs pipenv, и как мы уехали на poetry".
Видео: http://www.moscowpython.ru/meetup/66/poetry-pyenv/
Как готовить кактусИли управление Python-проектами с Poetry и pyenv
View Slide
Кто я?• Юрий Благовещенский• Работаю в Rambler & Co2
Управление проектами• Запуск• Публикация• Разработка3
К каким проектам это относится?• К любым.4
Virtualenv• Один проект = один интерпретатор5
setuptools• Авторы• Версия• Описание• CLI команды• Зависимости6
pip• requirements.txt• requirements-dev.txt• pip freeze7
Проблемы в pip• Нет разделения границ• Тяжело разрешать конфликты• Нельзя обновить проект целиком8
У кого все хорошо• Cargo (Rust)• npm (Javascript)• Любой менеджер со вменяемым lock-файлом.9
Чего мы хотим• Предсказуемые сборки• Разделять окружения• Видеть дерево зависимостей• Часто обновляться10
Poetry• Все в одном месте• Lock-файл• Обновление проекта11
Poetry• Все в одном месте• Lock-файл• Обновление проекта• Developer happiness12
Наши требования к управлениюзависимостями• Видеть дерево зависимостей• Часто обновляться• Работать с проектами-библиотеками13
Настройка dev-окружения• Poetry• Pyenv14
Начало работы• poetry new – стартануть проект• poetry init – создать pyproject.toml15
16
pyproject.toml• PEP 517• PEP 51817
18
tool.poetry• Версия• Авторы• Описание19
Зависимости• tool.poetry.dependencies• tool.poetry.dev-dependencies20
build-system• Руками не трогаем• Указывает, чем собирается проект21
Pyenv• pyenv install• pyenv local22
23
poetry add• Работает резолвер• Можно указывать точную версию24
25
Обновления• poetry update• poetry update 26
Если все плохо• Прочитать сообщение poetry• Снести виноватых• Добавить виноватые библиотеки вместе• poetry add • Протестировать27
Poetry install• Создается virtualenv• Устанавливаются зависимости из lock-файла• Проверяются хеши28
Когда нужен requirements.txt• Документация (Sphinx)• Есть только pip29
30
31
Выделение библиотеки• Библиотека – это еще один проект• Poetry работает по SemVer32
Pypi сервер• poetry config repositories. • poetry config http-basic. • pyproject.toml• poetry add33
Docker• Колхозный вариант:• Make requirements.txt• Pip install -r requirements.txt• Прямо в контейнере:• poetry install34
Устаревшие библиотеки• poetry show --outdated• Whitesource Bolt for GitHub• Dependabot35
Конкуренты (т)• Pipenv• Медленнее резолвит зависимости• Свой формат pyproject• Нестабильный api36
Итоги• Более предсказуемые сборки• Частые обновления• Порядок в проектах37
Контакты• Юрий Благовещенский IRL• @yurathestorm в Twitter• @ystormwalker в Telegram38