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

  Рет қаралды 21,372

Диджитализируй!

Диджитализируй!

Жыл бұрын

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

Пікірлер: 71
@yodapunishes
@yodapunishes Жыл бұрын
Идея для следующего видео: написание python модулей на C, Rust, Go и т.д. (FFI и все дела)
@zproger
@zproger Жыл бұрын
Хорошее решение. Мне понравилось что оно заранее создает все нужные директории для тестов и т.д. Хоть это и мелочь, но все же приятно. И извини что позвонил тебе на 3:26 и сорвал запись😅
@vailrahmatulin
@vailrahmatulin Жыл бұрын
Смотрю Ваши видео, и понимаю насколько я ещё нуб. Это печально. Но, главное, не сдаваться.
@MelnikovDmitriy
@MelnikovDmitriy Жыл бұрын
Круто! Спасибо за труды :)
@stan7657
@stan7657 Жыл бұрын
Я такое делаю через git submodule. На вид вроде попроще, чем через poetry. + не уверен будет ли подход с poetry работать, когда мы, например, собираем контейнер и деплоим его через git hub actions, или придётся поизвиваться?
@Mr.Moy-Gospodin
@Mr.Moy-Gospodin Жыл бұрын
Че-то непонятно толком, всё-же 6 минут видимо мало для объяснений (точнее объяснений (комментариев каких-то) и не было :-( )
@Alikhan-xm1xq
@Alikhan-xm1xq Жыл бұрын
Лучший, однозначно, спасибо вам большое
@user-vl1el8bp7y
@user-vl1el8bp7y Жыл бұрын
Интересненько, спасибо!
@v01d_yt
@v01d_yt Жыл бұрын
Обратите внимание на pdm. Вот это действительно круто.
@avpmk
@avpmk Жыл бұрын
Ну круто, полезно, спасибо. Интересно бывает с другого стека заглянуть посмотреть что там у питонистов. Евген, запиши пожалуйста видео как красиво запилить свою библиотеку с тестами, с публикацией в локальный корпоративный "nexus" (или любой другой артефактори).
@SudoAptReboot512
@SudoAptReboot512 Жыл бұрын
Очень хорошо снято видно что старались, очень хотел бы видеть еще видосов про services и бизнес логику в джанге и тд потому что многие ребята которых я знаю смотрели твое видео про обсуждение MVC и они соовсем не понимают как правильно все же писать безнес логику и информации об этом достаточно не много хотя очень интересно хотелось бы посмотреть на реализацию и также очень интересно как в эту концепцию можно всунуть drf что бы это было правильно
@andreos77
@andreos77 Жыл бұрын
лайк не глядя, попозже посмотрим
@zluka7951
@zluka7951 Жыл бұрын
спасибо за видео
@denisbel9740
@denisbel9740 Жыл бұрын
Как это на продакшене разворачивать? Кажется, можно просто собирать в pypi-пакеты и доставлять уже в среду. При такой подходе скорее всего не так важно какую систему контроля зависимостей использовать. Использовал poetry и pipenv. Последний намного приятней и головных болей с ним меньше. Так же насколько понимаю, что-то было изменено в последних версия pip
@PrefixKrema
@PrefixKrema Жыл бұрын
Согласен про pipenv. Сейчас ковыряю поетри чисто из-за хайпа, постоянно какие то ебланские ошибки вылезают. Из последнего приходится постоянно poetry config experimental.new-installer false прописывать что бы нормально встали модули.
@andreysh9340
@andreysh9340 Жыл бұрын
Мне кажется, тут наименование сервисы лишее, только путает. В общем, это про возможность указать зависимость в виде строки с директорией до пакета, еще до публикации пакета в репозиторий... Возможно, будет удобно использовать по пути разделения приложения на отдельные пакеты. Кстати, было бы неплохо, если бы такое видео появилось на канале, в смысле про разделение, версионирование и, соответственно, сборку dev/staging/production версий с последующем деплоем приложения. Continuous integration и все такое. Возможно, с использованием локального репозитория pypi...
@sikelmon
@sikelmon Жыл бұрын
А вот вопросик. Не смог заставить coc nvim работать под poetry. Пришлось ставить через ПИП. Я так понял, что без библиотек в папке env не будет работать?
@t0digital
@t0digital Жыл бұрын
У меня в виме pyright lsp сервер, он подцепляет пакеты из активированного виртуального окружения. Coc не пользуюсь, но, думаю, он должен уметь аналогичное
@sikelmon
@sikelmon Жыл бұрын
@@t0digital а для активации виртуального окружения нужна папка env. То есть нужно ставить библиотеки в нее через ПИП. И активировать . ./env/bin/activate. Не так?
@t0digital
@t0digital Жыл бұрын
poetry тоже делает env папку, просто она не рядом с кодом. Активируй окружение (poetry shell) и посмотри which python, покажет, где он лежит. Или тут посмотреть python-poetry.org/docs/configuration/#data-directory
@harry-smith404
@harry-smith404 Жыл бұрын
Напомнило гошные зависимости
@itzlaboratory
@itzlaboratory Жыл бұрын
Всё отлично, но: как я понял, при таком подключении tools - poetry install перекинет контент tools в site_packages. А если мы поправим tools, то для обновления придётся сначала удалить tools, а потом заного поставить. Это не удобно....
@mrBINnnnn
@mrBINnnnn Жыл бұрын
Почитайте про buildout, он умеет то о чём вы говорите
@user-ut3el5bx4s
@user-ut3el5bx4s Жыл бұрын
Если поставить флаг develop = true, то при poetry update будет устанавливаться обновленная версия
@user-fi5yi4kw4h
@user-fi5yi4kw4h Жыл бұрын
а как быть когда project 1 использует версию питона отличную от проекта tools или конфликтующие по версиям пакеты?
@t0digital
@t0digital Жыл бұрын
Это не микросервисы с полной изоляцией друг от друга, это просто увеличение степени изоляции кода друг от друга, не до бесконечности. Конечно, код будет работать в одном интерпретаторе одной версии и с одним деревом зависимостей, хотя про дерево зависимостей не уверен, надо протестить, возможно поэтри умеет это решать, но не уверен
@ceo-s
@ceo-s 10 ай бұрын
@@t0digital к сожалению не умеет(
@antontrofimov3486
@antontrofimov3486 Жыл бұрын
Спасибо, очень интересная информация, единственное, что возникла проблема с приватными репами внутри Docker-контейнера. Может тоже кто столкнулся, использую gitlab, для получения зависимойтей использую deploy token(аналог username, password), вручную токен работает, но вот заставить poetry его использовать никак не получается внутри контейнера( пробовал и gitconfig через volume подцеплять и в Dockerfile git config --global url ... instedOf прописывать, ничего не помогает). Если кто-то подскажет решение - буду премного благодарен
@andreypak1347
@andreypak1347 7 ай бұрын
А что если я хочу в одном репо брать один и тот же код, но в разных комбинациях и делать whl файлы. Чтобы каждый потом независимо раскатывать в AWS Glue. Например у меня есть сервис работы с DynamoDB но он нужен только в одной джобе. А разделить на разные репо я не могу потому что есть общая бизнес логика. Я пока только придумал сделать три pyproject.toml и три whl. Common либы и две глю джобы. Можно ли это сделать как-то красивее?
@milord3089
@milord3089 Жыл бұрын
Приветствую использовал poetry для интернет магазина. Столкнулся проблемой poetry не скачивает lxml и stripe. После этого я отказался от poetry.
@t0digital
@t0digital Жыл бұрын
Затестил сейчас - poetry add lxml stripe. Поставились. C lxml у меня были проблемы раньше и просто с pip, там надо было доставлять модули в ОС какие-то, уже не помню
@KirillKlenov
@KirillKlenov Жыл бұрын
Из видео складывается впечатление что для такого сценария нужен poetry, по факту просто устанавливаются пакеты в editable режиме. pip install -e ./tools сделал бы тоже самое и даже setuptools бы хватило при желании.
@ChannelYoJo
@ChannelYoJo Жыл бұрын
Прекрасный антураж! Это твоя квартира? Студия? Офис?)
@t0digital
@t0digital Жыл бұрын
арендная квартира-студия-офис:)
@onlymint2114
@onlymint2114 Жыл бұрын
Нифига честно говоря не понял, но выглядит интересно
@user-nz1nc1cu6i
@user-nz1nc1cu6i Жыл бұрын
Никто не видел актуальную инструкцию по запуску django проектов на IIS?
@zyoma9958
@zyoma9958 Жыл бұрын
Алексей, запили видос про ContextVar либу. Очень уж много не явного.
@limonred5283
@limonred5283 Жыл бұрын
Честно говоря сложно себе представить такой хак на рабочих проектах, где все собирается в контейнера и в кубере. Зато для учебных проектов - огонь.
@Alexey-gp7vc
@Alexey-gp7vc Жыл бұрын
Согласен, то что так можно - прикольно. Но в целом выглядит хрупко т.к. нет версионирования (или через гит можно организовать?). В продакшене если не монорепа, то для стабильности похожего решения наверное надо поднимать локальный PyPi репозиторий. Но это не точно, я хз.
@sergeykapshuchenko5695
@sergeykapshuchenko5695 Жыл бұрын
@@Alexey-gp7vc Почему нет, там можно указывать версию, если мы об одном и том же говорим. Можно так же установить с репозитория GitHub, gitlab без Pypi
@Alexey-gp7vc
@Alexey-gp7vc Жыл бұрын
@@sergeykapshuchenko5695 да? спасибо, надо будет покурить эту тему)
@sergeykapshuchenko5695
@sergeykapshuchenko5695 Жыл бұрын
@@Alexey-gp7vc главное при изменениях в пакет менять так же его версию в файле pyproject.toml
@t0digital
@t0digital Жыл бұрын
Poetry не делает никакой магии. Это обычное виртуальное окружение. Пакет tools кладётся в виртуальное окружение в site-packages внутри директории виртуального окружения. Это никак не мешает куберу и контейнерам.
@PetrushkinAleksandr
@PetrushkinAleksandr Жыл бұрын
Ничего себе. У нас уже сайт появился ❤
@donnillorussia
@donnillorussia 11 ай бұрын
А не проще ли sys.path.append использовать? Зачем вообще poetry тут нужна? Избыточно же, не?
@anima7654
@anima7654 Жыл бұрын
Очень интересно, ничего не понятно =) Смотришь и вроде что-то понимаешь, но всё так тяжело для человека который в 30 лет решил изучать тему программирования =) Ладно, главное не сдаваться =)
@t0digital
@t0digital Жыл бұрын
Правильно, главное не сдаваться!
@sergeykapshuchenko5695
@sergeykapshuchenko5695 Жыл бұрын
Перешел на Poetry и кайфую, забыл о проблемах связанных с pip. 1. Можно забыть о setup.cfg, py и получать удовольствие от легкой установки с GitHub репо) 2. нормальное дерево главных зависимостей, а не каша из всех 3. параллельная установка зависимостей 4. конфиги для других пакетов прямо в pyproject (pytest, black ...) 5. разделение зависимостей на dev, prod Устанавливать только нужно в той же CI либо билдах, но это не критично. UPD: самое клевое, это простое удаление зависимости. Не нужно думать, какие подзависимости нужно удалить с файла )
@limonred5283
@limonred5283 Жыл бұрын
падажжи, сейчас придут девопсы и сисадмины и расскажут как это все прекрасно делается в setup.cfg
@sergeykapshuchenko5695
@sergeykapshuchenko5695 Жыл бұрын
@@limonred5283 та я ж не спорю) Я не devops, мне понравилось с poetry работать без этого головняка )
@Alexey-gp7vc
@Alexey-gp7vc Жыл бұрын
@@sergeykapshuchenko5695 +1
@lzrdblzzrd
@lzrdblzzrd Жыл бұрын
После того как перешел на Poetry, вообще не могу представить себе работу с Python без Poetry. Он слишком хорош по сравнению с pip и venv.
@Alexey-gp7vc
@Alexey-gp7vc Жыл бұрын
@@lzrdblzzrd ну так - у всех есть npm/yarn/go get/go mod/cargo/etc, а мы что самые левые?))
@Alexey-gp7vc
@Alexey-gp7vc Жыл бұрын
а_что_так_можно_было.jpg
@Ca1vema
@Ca1vema Жыл бұрын
В видео будет о том как авторы poetry коммитом добавили 5% шанс уронить CI, чтобы люди не пользовались deprecated функциональностью? ИМХО Poetry это абсолютная избыточность. Аналогичные проблемы сейчас можно решать через старый добрый pip.
@t0digital
@t0digital Жыл бұрын
нет
@limonred5283
@limonred5283 Жыл бұрын
вообще все проблемы решаются через файл setup в корне проекта))
@sergeykapshuchenko5695
@sergeykapshuchenko5695 Жыл бұрын
Можна решить самому, а можно установить poetry и ничего не решать )) Аналог npm, только для питона
@Ca1vema
@Ca1vema Жыл бұрын
@@sergeykapshuchenko5695 И что конкретно poetry для тебя решает то? :) Все пакеты можно устанавливать через pip. pip умеет считать хэши и зависимости лочить. Что ещё нужно то? притащить 50 с лишним пакетов зависимостей только для того чтобы писать poetry add, вместо pip install? :)
@sergeykapshuchenko5695
@sergeykapshuchenko5695 Жыл бұрын
@@Ca1vema как минимум, строит нормальное дерево зависимостей, а не штору из всего )
@MrShishlin
@MrShishlin Жыл бұрын
Класс разработчикам буду кидать это видео когда опять будут тупить в поетри. 🎉😂
@---fq2kd
@---fq2kd Жыл бұрын
очки забыл надеть - смотри не перепутай
@t0digital
@t0digital Жыл бұрын
Что не перепутать?
@---fq2kd
@---fq2kd Жыл бұрын
@@t0digital буквочки циферки)
OMG 😨 Era o tênis dela 🤬
00:19
Polar em português
Рет қаралды 10 МЛН
小路飞姐姐居然让路飞小路飞都消失了#海贼王  #路飞
00:47
路飞与唐舞桐
Рет қаралды 94 МЛН
Доклад на тему "Система управления пакетами dpkg"
10:34
СМОТРИТЕ ВИДЕО НА X2, Я МЕДЛИТЕЛЬНАЯ
Рет қаралды 3
❗️Долги/Кредиты. Моя история. Ответы на вопросы.
18:29
Rust's Alien Data Types 👽 Box, Rc, Arc
11:54
Code to the Moon
Рет қаралды 132 М.
How a Leader Can Analyze Their Own Effectiveness
16:25
Александр Высоцкий
Рет қаралды 17 М.
Год программирую на Go | Стоит ли учить Golang 2023
3:29
Владимир Балун
Рет қаралды 34 М.
A Simpler Way to See Results
19:17
Logan Smith
Рет қаралды 94 М.
РАЗМЕЩАЕМ БОТА НА СЕРВЕРЕ | Телеграм боты ч. 5
11:43
Славная академия
Рет қаралды 22 М.
What is a MESSAGE QUEUE and Where is it used?
9:59
Gaurav Sen
Рет қаралды 939 М.
OMG 😨 Era o tênis dela 🤬
00:19
Polar em português
Рет қаралды 10 МЛН