Сервисы в Poetry - дробим Python-проект по закрытым пакетам

Поділитися
Вставка
  • Опубліковано 30 лис 2024
  • Поговорим об управлении зависимостями в Python-проектах и создании сервисов с Poetry!
    Мой курс «Хардкорная веб-разработка» - course.to.digital
    Книжный клуб Ботаним!, где мы читаем хорошие ИТ-книги: botanim.to.dig...
    Telegram - t.me/t0digital
    /****************** about ******************/
    Меня зовут Алексей Голобурдин, я программирую с 2004 года и на этом канале делюсь своим опытом. Я основатель и руководитель компаний:
    - Диджитализируй digitalize.team, разрабатываем сложные IT системы для бизнеса;
    - Salesbeat salesbeat.pro, комплексный модуль доставки для интернет магазинов.
    Telegram канал - t.me/t0digital
    ВК - digital...
    RuTube - rutube.ru/chan...
    Дзен - dzen.ru/id/623...

КОМЕНТАРІ • 70

  • @yodapunishes
    @yodapunishes 2 роки тому +35

    Идея для следующего видео: написание python модулей на C, Rust, Go и т.д. (FFI и все дела)

  • @zproger
    @zproger 2 роки тому +22

    Хорошее решение.
    Мне понравилось что оно заранее создает все нужные директории для тестов и т.д.
    Хоть это и мелочь, но все же приятно.
    И извини что позвонил тебе на 3:26 и сорвал запись😅

  • @Sadness-zov
    @Sadness-zov 2 роки тому +3

    Смотрю Ваши видео, и понимаю насколько я ещё нуб. Это печально. Но, главное, не сдаваться.

  • @v01d_yt
    @v01d_yt 2 роки тому +2

    Обратите внимание на pdm. Вот это действительно круто.

  • @denisbel9740
    @denisbel9740 2 роки тому +5

    Как это на продакшене разворачивать? Кажется, можно просто собирать в pypi-пакеты и доставлять уже в среду. При такой подходе скорее всего не так важно какую систему контроля зависимостей использовать. Использовал poetry и pipenv. Последний намного приятней и головных болей с ним меньше. Так же насколько понимаю, что-то было изменено в последних версия pip

    • @PrefixKrema
      @PrefixKrema 2 роки тому

      Согласен про pipenv. Сейчас ковыряю поетри чисто из-за хайпа, постоянно какие то ебланские ошибки вылезают.
      Из последнего приходится постоянно poetry config experimental.new-installer false прописывать что бы нормально встали модули.

  • @andreos77
    @andreos77 2 роки тому +1

    лайк не глядя, попозже посмотрим

  • @stan7657
    @stan7657 2 роки тому +2

    Я такое делаю через git submodule. На вид вроде попроще, чем через poetry. + не уверен будет ли подход с poetry работать, когда мы, например, собираем контейнер и деплоим его через git hub actions, или придётся поизвиваться?

  • @andreysh9340
    @andreysh9340 2 роки тому +1

    Мне кажется, тут наименование сервисы лишее, только путает. В общем, это про возможность указать зависимость в виде строки с директорией до пакета, еще до публикации пакета в репозиторий... Возможно, будет удобно использовать по пути разделения приложения на отдельные пакеты. Кстати, было бы неплохо, если бы такое видео появилось на канале, в смысле про разделение, версионирование и, соответственно, сборку dev/staging/production версий с последующем деплоем приложения. Continuous integration и все такое. Возможно, с использованием локального репозитория pypi...

  • @KirillKlenov
    @KirillKlenov Рік тому

    Из видео складывается впечатление что для такого сценария нужен poetry, по факту просто устанавливаются пакеты в editable режиме. pip install -e ./tools сделал бы тоже самое и даже setuptools бы хватило при желании.

  • @Mr.Moy-Gospodin
    @Mr.Moy-Gospodin 2 роки тому +5

    Че-то непонятно толком, всё-же 6 минут видимо мало для объяснений (точнее объяснений (комментариев каких-то) и не было :-( )

  • @ВиталийКоновалов-г1ц

    Интересненько, спасибо!

  • @SudoAptReboot512
    @SudoAptReboot512 2 роки тому +2

    Очень хорошо снято видно что старались, очень хотел бы видеть еще видосов про services и бизнес логику в джанге и тд потому что многие ребята которых я знаю смотрели твое видео про обсуждение MVC и они соовсем не понимают как правильно все же писать безнес логику и информации об этом достаточно не много хотя очень интересно хотелось бы посмотреть на реализацию и также очень интересно как в эту концепцию можно всунуть drf что бы это было правильно

  • @PetrushkinAleksandr
    @PetrushkinAleksandr 2 роки тому +2

    Ничего себе. У нас уже сайт появился ❤

  • @Alikhan-xm1xq
    @Alikhan-xm1xq 2 роки тому +1

    Лучший, однозначно, спасибо вам большое

  • @MelnikovDmitriy
    @MelnikovDmitriy 2 роки тому +1

    Круто! Спасибо за труды :)

  • @andreypak1347
    @andreypak1347 Рік тому

    А что если я хочу в одном репо брать один и тот же код, но в разных комбинациях и делать whl файлы. Чтобы каждый потом независимо раскатывать в AWS Glue. Например у меня есть сервис работы с DynamoDB но он нужен только в одной джобе. А разделить на разные репо я не могу потому что есть общая бизнес логика.
    Я пока только придумал сделать три pyproject.toml и три whl. Common либы и две глю джобы.
    Можно ли это сделать как-то красивее?

  • @itzlaboratory
    @itzlaboratory 2 роки тому +2

    Всё отлично, но:
    как я понял, при таком подключении tools - poetry install перекинет контент tools в site_packages. А если мы поправим tools, то для обновления придётся сначала удалить tools, а потом заного поставить.
    Это не удобно....

    • @КонстантинДудерский
      @КонстантинДудерский 2 роки тому

      Если поставить флаг develop = true, то при poetry update будет устанавливаться обновленная версия

  • @avpmk
    @avpmk 2 роки тому +1

    Ну круто, полезно, спасибо. Интересно бывает с другого стека заглянуть посмотреть что там у питонистов. Евген, запиши пожалуйста видео как красиво запилить свою библиотеку с тестами, с публикацией в локальный корпоративный "nexus" (или любой другой артефактори).

  • @donnillorussia
    @donnillorussia Рік тому

    А не проще ли sys.path.append использовать? Зачем вообще poetry тут нужна? Избыточно же, не?

  • @sikelmon
    @sikelmon 2 роки тому

    А вот вопросик. Не смог заставить coc nvim работать под poetry. Пришлось ставить через ПИП. Я так понял, что без библиотек в папке env не будет работать?

    • @t0digital
      @t0digital  2 роки тому

      У меня в виме pyright lsp сервер, он подцепляет пакеты из активированного виртуального окружения. Coc не пользуюсь, но, думаю, он должен уметь аналогичное

    • @sikelmon
      @sikelmon 2 роки тому

      @@t0digital а для активации виртуального окружения нужна папка env. То есть нужно ставить библиотеки в нее через ПИП. И активировать . ./env/bin/activate. Не так?

    • @t0digital
      @t0digital  2 роки тому +1

      poetry тоже делает env папку, просто она не рядом с кодом. Активируй окружение (poetry shell) и посмотри which python, покажет, где он лежит. Или тут посмотреть python-poetry.org/docs/configuration/#data-directory

  • @milord3089
    @milord3089 2 роки тому

    Приветствую использовал poetry для интернет магазина. Столкнулся проблемой poetry не скачивает lxml и stripe. После этого я отказался от poetry.

    • @t0digital
      @t0digital  2 роки тому

      Затестил сейчас - poetry add lxml stripe. Поставились. C lxml у меня были проблемы раньше и просто с pip, там надо было доставлять модули в ОС какие-то, уже не помню

  • @harry-smith404
    @harry-smith404 2 роки тому

    Напомнило гошные зависимости

  • @ChannelYoJo
    @ChannelYoJo 2 роки тому

    Прекрасный антураж! Это твоя квартира? Студия? Офис?)

    • @t0digital
      @t0digital  2 роки тому +1

      арендная квартира-студия-офис:)

  • @АлексейДанилов-п8х

    а как быть когда project 1 использует версию питона отличную от проекта tools или конфликтующие по версиям пакеты?

    • @t0digital
      @t0digital  2 роки тому

      Это не микросервисы с полной изоляцией друг от друга, это просто увеличение степени изоляции кода друг от друга, не до бесконечности. Конечно, код будет работать в одном интерпретаторе одной версии и с одним деревом зависимостей, хотя про дерево зависимостей не уверен, надо протестить, возможно поэтри умеет это решать, но не уверен

    • @ceo-s
      @ceo-s Рік тому

      @@t0digital к сожалению не умеет(

  • @zyoma9958
    @zyoma9958 2 роки тому

    Алексей, запили видос про ContextVar либу. Очень уж много не явного.

  • @zluka7951
    @zluka7951 2 роки тому +1

    спасибо за видео

  • @ОлегДорожкин-я1е
    @ОлегДорожкин-я1е 2 роки тому

    Никто не видел актуальную инструкцию по запуску django проектов на IIS?

  • @antontrofimov3486
    @antontrofimov3486 2 роки тому

    Спасибо, очень интересная информация, единственное, что возникла проблема с приватными репами внутри Docker-контейнера. Может тоже кто столкнулся, использую gitlab, для получения зависимойтей использую deploy token(аналог username, password), вручную токен работает, но вот заставить poetry его использовать никак не получается внутри контейнера( пробовал и gitconfig через volume подцеплять и в Dockerfile git config --global url ... instedOf прописывать, ничего не помогает). Если кто-то подскажет решение - буду премного благодарен

  • @onlymint2114
    @onlymint2114 2 роки тому

    Нифига честно говоря не понял, но выглядит интересно

  • @sergeykapshuchenko5695
    @sergeykapshuchenko5695 2 роки тому +4

    Перешел на Poetry и кайфую, забыл о проблемах связанных с pip.
    1. Можно забыть о setup.cfg, py и получать удовольствие от легкой установки с GitHub репо)
    2. нормальное дерево главных зависимостей, а не каша из всех
    3. параллельная установка зависимостей
    4. конфиги для других пакетов прямо в pyproject (pytest, black ...)
    5. разделение зависимостей на dev, prod
    Устанавливать только нужно в той же CI либо билдах, но это не критично.
    UPD: самое клевое, это простое удаление зависимости. Не нужно думать, какие подзависимости нужно удалить с файла )

    • @limonred5283
      @limonred5283 2 роки тому

      падажжи, сейчас придут девопсы и сисадмины и расскажут как это все прекрасно делается в setup.cfg

    • @sergeykapshuchenko5695
      @sergeykapshuchenko5695 2 роки тому +1

      @@limonred5283 та я ж не спорю) Я не devops, мне понравилось с poetry работать без этого головняка )

    • @Alexey-gp7vc
      @Alexey-gp7vc 2 роки тому

      @@sergeykapshuchenko5695 +1

    • @lzrdblzzrd
      @lzrdblzzrd 2 роки тому +1

      После того как перешел на Poetry, вообще не могу представить себе работу с Python без Poetry. Он слишком хорош по сравнению с pip и venv.

    • @Alexey-gp7vc
      @Alexey-gp7vc 2 роки тому +1

      @@lzrdblzzrd ну так - у всех есть npm/yarn/go get/go mod/cargo/etc, а мы что самые левые?))

  • @Ca1vema
    @Ca1vema 2 роки тому +2

    В видео будет о том как авторы poetry коммитом добавили 5% шанс уронить CI, чтобы люди не пользовались deprecated функциональностью?
    ИМХО Poetry это абсолютная избыточность. Аналогичные проблемы сейчас можно решать через старый добрый pip.

    • @t0digital
      @t0digital  2 роки тому +1

      нет

    • @limonred5283
      @limonred5283 2 роки тому

      вообще все проблемы решаются через файл setup в корне проекта))

    • @sergeykapshuchenko5695
      @sergeykapshuchenko5695 2 роки тому

      Можна решить самому, а можно установить poetry и ничего не решать )) Аналог npm, только для питона

    • @Ca1vema
      @Ca1vema 2 роки тому +3

      @@sergeykapshuchenko5695 И что конкретно poetry для тебя решает то? :)
      Все пакеты можно устанавливать через pip. pip умеет считать хэши и зависимости лочить. Что ещё нужно то?
      притащить 50 с лишним пакетов зависимостей только для того чтобы писать poetry add, вместо pip install? :)

    • @sergeykapshuchenko5695
      @sergeykapshuchenko5695 2 роки тому

      @@Ca1vema как минимум, строит нормальное дерево зависимостей, а не штору из всего )

  • @limonred5283
    @limonred5283 2 роки тому +1

    Честно говоря сложно себе представить такой хак на рабочих проектах, где все собирается в контейнера и в кубере.
    Зато для учебных проектов - огонь.

    • @Alexey-gp7vc
      @Alexey-gp7vc 2 роки тому

      Согласен, то что так можно - прикольно. Но в целом выглядит хрупко т.к. нет версионирования (или через гит можно организовать?). В продакшене если не монорепа, то для стабильности похожего решения наверное надо поднимать локальный PyPi репозиторий. Но это не точно, я хз.

    • @sergeykapshuchenko5695
      @sergeykapshuchenko5695 2 роки тому

      @@Alexey-gp7vc Почему нет, там можно указывать версию, если мы об одном и том же говорим. Можно так же установить с репозитория GitHub, gitlab без Pypi

    • @Alexey-gp7vc
      @Alexey-gp7vc 2 роки тому

      @@sergeykapshuchenko5695 да? спасибо, надо будет покурить эту тему)

    • @sergeykapshuchenko5695
      @sergeykapshuchenko5695 2 роки тому

      @@Alexey-gp7vc главное при изменениях в пакет менять так же его версию в файле pyproject.toml

    • @t0digital
      @t0digital  2 роки тому +1

      Poetry не делает никакой магии. Это обычное виртуальное окружение. Пакет tools кладётся в виртуальное окружение в site-packages внутри директории виртуального окружения. Это никак не мешает куберу и контейнерам.

  • @anima7654
    @anima7654 2 роки тому +1

    Очень интересно, ничего не понятно =) Смотришь и вроде что-то понимаешь, но всё так тяжело для человека который в 30 лет решил изучать тему программирования =) Ладно, главное не сдаваться =)

    • @t0digital
      @t0digital  2 роки тому +1

      Правильно, главное не сдаваться!

  • @---fq2kd
    @---fq2kd 2 роки тому

    очки забыл надеть - смотри не перепутай

    • @t0digital
      @t0digital  2 роки тому

      Что не перепутать?

    • @---fq2kd
      @---fq2kd 2 роки тому

      @@t0digital буквочки циферки)

  • @Alexey-gp7vc
    @Alexey-gp7vc 2 роки тому

    а_что_так_можно_было.jpg

  • @MrShishlin
    @MrShishlin 2 роки тому

    Класс разработчикам буду кидать это видео когда опять будут тупить в поетри. 🎉😂