Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Poetry + Pyenv

Poetry + Pyenv

Юрий Благовещенский (Рамблер) @ Moscow Python Meetup 66
"Ещё раз poetry vs pipenv, и как мы уехали на poetry".

Видео: http://www.moscowpython.ru/meetup/66/poetry-pyenv/

Moscow Python Meetup
PRO

July 25, 2019
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. Как готовить кактус
    Или управление Python-проектами с Poetry и pyenv

    View Slide

  2. Кто я?
    • Юрий Благовещенский
    • Работаю в Rambler & Co
    2

    View Slide

  3. Управление проектами
    • Запуск
    • Публикация
    • Разработка
    3

    View Slide

  4. К каким проектам это относится?
    • К любым.
    4

    View Slide

  5. Virtualenv
    • Один проект = один интерпретатор
    5

    View Slide

  6. setuptools
    • Авторы
    • Версия
    • Описание
    • CLI команды
    • Зависимости
    6

    View Slide

  7. pip
    • requirements.txt
    • requirements-dev.txt
    • pip freeze
    7

    View Slide

  8. Проблемы в pip
    • Нет разделения границ
    • Тяжело разрешать конфликты
    • Нельзя обновить проект целиком
    8

    View Slide

  9. У кого все хорошо
    • Cargo (Rust)
    • npm (Javascript)
    • Любой менеджер со вменяемым lock-файлом.
    9

    View Slide

  10. Чего мы хотим
    • Предсказуемые сборки
    • Разделять окружения
    • Видеть дерево зависимостей
    • Часто обновляться
    10

    View Slide

  11. Poetry
    • Все в одном месте
    • Lock-файл
    • Обновление проекта
    11

    View Slide

  12. Poetry
    • Все в одном месте
    • Lock-файл
    • Обновление проекта
    • Developer happiness
    12

    View Slide

  13. Наши требования к управлению
    зависимостями
    • Видеть дерево зависимостей
    • Часто обновляться
    • Работать с проектами-библиотеками
    13

    View Slide

  14. Настройка dev-окружения
    • Poetry
    • Pyenv
    14

    View Slide

  15. Начало работы
    • poetry new – стартануть проект
    • poetry init – создать pyproject.toml
    15

    View Slide

  16. 16

    View Slide

  17. pyproject.toml
    • PEP 517
    • PEP 518
    17

    View Slide

  18. 18

    View Slide

  19. tool.poetry
    • Версия
    • Авторы
    • Описание
    19

    View Slide

  20. Зависимости
    • tool.poetry.dependencies
    • tool.poetry.dev-dependencies
    20

    View Slide

  21. build-system
    • Руками не трогаем
    • Указывает, чем собирается проект
    21

    View Slide

  22. Pyenv
    • pyenv install
    • pyenv local
    22

    View Slide

  23. 23

    View Slide

  24. poetry add
    • Работает резолвер
    • Можно указывать точную версию
    24

    View Slide

  25. 25

    View Slide

  26. Обновления
    • poetry update
    • poetry update
    26

    View Slide

  27. Если все плохо
    • Прочитать сообщение poetry
    • Снести виноватых
    • Добавить виноватые библиотеки вместе
    • poetry add
    • Протестировать
    27

    View Slide

  28. Poetry install
    • Создается virtualenv
    • Устанавливаются зависимости из lock-файла
    • Проверяются хеши
    28

    View Slide

  29. Когда нужен requirements.txt
    • Документация (Sphinx)
    • Есть только pip
    29

    View Slide

  30. 30

    View Slide

  31. 31

    View Slide

  32. Выделение библиотеки
    • Библиотека – это еще один проект
    • Poetry работает по SemVer
    32

    View Slide

  33. Pypi сервер
    • poetry config repositories.
    • poetry config http-basic.
    • pyproject.toml
    • poetry add
    33

    View Slide

  34. Docker
    • Колхозный вариант:
    • Make requirements.txt
    • Pip install -r requirements.txt
    • Прямо в контейнере:
    • poetry install
    34

    View Slide

  35. Устаревшие библиотеки
    • poetry show --outdated
    • Whitesource Bolt for GitHub
    • Dependabot
    35

    View Slide

  36. Конкуренты (т)
    • Pipenv
    • Медленнее резолвит зависимости
    • Свой формат pyproject
    • Нестабильный api
    36

    View Slide

  37. Итоги
    • Более предсказуемые сборки
    • Частые обновления
    • Порядок в проектах
    37

    View Slide

  38. Контакты
    • Юрий Благовещенский IRL
    • @yurathestorm в Twitter
    • @ystormwalker в Telegram
    38

    View Slide