Poetry - продвинутая замена pip для Python. Менеджер зависимостей, который нам нужен в 2021м!
Вставка
- Опубліковано 10 лют 2025
- Мой курс «Хардкорная веб-разработка» - course.to.digital
Книжный клуб Ботаним!, где мы читаем хорошие ИТ-книги: botanim.to.dig...
Telegram: t0digital.t.me
Сказать спасибо за это видео можно здесь - boosty.to/digi...
Poetry - современная мощная замена пакетному менеджеру pip. Poetry делает управление зависимостями и работу с проектом такими, какими они должны быть в 2021м. Если вам не хватает продвинутых возможностей в pip, присмотритесь к Poetry, кажется, это лучшая альтернатива.
/****************** about ******************/
Меня зовут Алексей Голобурдин, я программирую с 2004 года и на этом канале делюсь своим опытом. Я основатель и руководитель компаний:
- Диджитализируй digitalize.team, разрабатываем сложные IT системы для бизнеса;
- Salesbeat salesbeat.pro, комплексный модуль доставки для интернет магазинов.
Если у вас есть проект на разработку, пишите нам на hi@digitalize.team.
С другими предложениями, а также если вам нужна одна или несколько индивидуальных консультаций/уроков по разработке (3000 руб/час), пишите мне на alexey@salesbeat.pro.
Telegram канал - t.me/t0digital
ВК - digital...
RuTube - rutube.ru/chan...
Дзен - dzen.ru/id/623...
Я скучал, спасибо за видео!
Леха, у тебя, пожалуй, самые качественные видео про кодинг. Большой тебе за это респект!
Спасибооо💪
Кааапец, потерянные годы! Алексей спасибо, буду пользоваться!
Как всегда лучший контент по Python в русскоязычном ютубе! Про Poetry сам узнал не так давно, когда столкнулся с ограничениями в Pipenv, а Poetry их полностью покрыл
Pipenv тормознутая штука. А чего не хватало в pipenv, что перешли на poetry?
Боже, почему в гайдах всегда все так легко, а у меня всегда возникают трехэтажные ошибки?
Это называется путь программиста)
Потому что руки...
А зачем сравнивать с pip? Имхо интереснее было бы сравнить с pipenv.
+
по определению
+
не все знают про pipenv
@ssshevelev, уже нечего сравнивать. Поддержка pipenv здорово притормозилась.
Пользуюсь этой либой на текущем проекте! Вещь реально крутая. Спасибо за видео 👏
Открывал с мыслью ну что там улучшать, всё и так просто и понятно. А ушёл просвещенным пробовать poetry
Poetry очень похож на cargo в rust (ясно чем вдохновлялись, похвально)
Poetry одной из целей заявляет унификацию интерфейса управления пакетами, активно смотрят на cargo и yarn, да. Идея отличная
Спасибо за материал. Ничего не знал о poetry до этого видео. Теперь буду пробовать.
Отлично!
Спасибо большое тебе за твой труд!
Спасибо, буду теперь пользоваться этим инструментом.
Всем интересно сравнение с pipenv)(мне тоже). Недавно копался в pipenv, был небольшой затуп с установкой black(при установке нужно добавлять ключ --pre) а еще при установке aiogram pipenv тупо скипал установку пакета async-timeout, ссылаясь на неправильный python_full_version
ПАсиба дарагой. Счатья, здоровья, семейного благополучия, удачи, море удачи и дачу у моря
Можно указать чтобы venv создавалось в папке проекта, так и pycharm и вроде даже vscode позволят сразу выбрать окружение, без прописывания путей.
Я скучал по видосам. Материал, как всегда, шикарный, спасибо!
Спасибо!
Спасибо большое за видео , буду пропобовать
Котаны возвращаются :)
Очень круто, спасибо!
Замечательно. После npm,yarn и особенно bun(да, это все js менаджеры) pip выглядел, как избалованный толстый ребёнок из американсих фильмов 90, которого все хвалят за его существование.
Это я удачно зашёл! Мне как раз сказали его подучить )))
отлично:)
Отличное видео. Спасибо за разбор
Как раз используем его)
Люди добрые, подскажите, пожалуйста, все никак не могу разобраться с одной особенностью poetry: к примеру, устанавливаю библиотеку pytelegrambotapi и poetry сразу обновляет библиотеку urllib3 до версии >2.0 и после этого невозможно добавить следующий пакет с помощью poetry add, так как выдает ошибку : __init__() got an unexpected keyword argument 'strict'
Пытался откатить версию до старой рабочей 1.26.15 urllib3, но при последующей poetry add она снова обновляется до версии 2 и снова эта ошибка. Подскажите, если кто сталкивался ) а то pip то работает корректно, но не хочется на него возвращаться))
У pycharm есть плагин для работы с poetry. Алексей, мне тоже интересно где м1?)
да есть
Отличное видео, спасибо!
Бооооооольшееее контента, пожалуйста =)
Как всегда все круто
А. что скажете про такой инструмент как pipenv, можно ли их сравнить? и в чью сторону лучше смотреть?
Вообще, было бы круто показать, что этот менеджер качает и устанавливает пакеты параллельно! Потому что попробуйте поставить пакет notebook (у него в зависимостях много чего) через pip, займет это у вас порядка минуты!!! Хотя через poetry это занимает меньше 5 секунд! Это реально ускоряет сборку проектов (CI/CD) и экономит кучу времени!) В общем то очень рад этому инструменту!
Очень полезно, спасибо!
Пора про pdm снимать 😊
Большое спасибо за облегчение жизни)
Какие преимущества у Poetry перед pipenv?
pipenv скорее мёртв, чем жив.
спасибо, попробую poetry
сними видео про библиотеки icecream и black
текущая версия идет с packages = [{include = "poetry_test_project"}]. Даже не надо указывать корневую директорию если что...
Отличное видео!
Спасибооо!
Интересная штука, спс за видео
Использую mac mini M1, так вот на него не хочет ставиться django-crypto-fields в связке с poetry. Зависает на добавлении зависимостей и счетчик бесконечно идет... При этом на mac mini c intel все залетает на ура.
Я правильно понял, что эта штука не работает глобально? Т.е. poetry необходимо, условно, инициализировать для каждого своего проекта отдельно? Как git init, например? И если он не инициализирован, то его возможности я использовать не могу? И что будет, если я его инициализирую в уже существующем проекте? увидит ли он все зависимости?
poetry - менеджер зависимостей. В каждом проекте зависимости свои, поэтому он работает локально для каждого проекта, как и git, к примеру. Если вы инициализируете его в существующем проекте, зависимости существующего проекта автоматически никак в менеджер зависимостей poetry не попадут, нужно будет это делать отдельно.
@@t0digital Все понял. Спасибо!
Dobryj vecer, kak vam UV obzora neplanirujete?
планирую
А что на счёт uv ?
Спасибо за видео
Как раз разбирался сегодня с Pop. Что там и как на самом деле 😁
Имеет ли смысл держать в репозитории при работе с пип весь вывод pip freeze? Я туда руками записываю только те пакеты которые ставил, зачем мне зависимости зависимостей? Пусть о них пип думает, разве нет?
Хорошо бы хранить конкретные версии всех пакетов вместе с зависимостями, потому что может какая нибудь зависимость обновится и сломается совместимость, в итоге не заработает код
Это нужно, например, для воспроизводимых сборок
Имеет, но только не в requirements.txt, а в отдельном файле freeze.txt.
@@ishalyapin84 красивое и такое логичное решение. Спасибо
что скажете насчет PDM?
Ка пользоваться дебагом с этим poetry?
так же как и без poetry, это не связанные вопросы
давно пора было рассказать
Кто шарит, подскажите, понять не могу, зачем нужна команда poetry shell? Ведь при poetry start или init, вроде poetry и так создает Вирт окружение и все зависимости устанавливает в него, а не глобально. Зачем тогда poetry shell для меня загадка!?
Видимо это аналог простой команды python/python3, когда у тебя открывается пайтоновский shell, где ты можешь поковырять что-то лайтовое.
А здесь poetry shell тебе выдаст тоже питоновский shell, но со своим не глобальным окружением, где ты можешь кошмарить не боясь за что-либо.
Наверное как-то так)
@@quantum3002 poetry shell открывает командную строку (терминал), а не python
Очень хотелось бы посмотреть видео про nix как в целом, так и применительно к питону в частности
А как потом зависимости из toml устанавливать в докере например? Устанавливать poetry при сборке образа?
Да. Его можно поставить и из pip для конкретного интерпретатора, или через sh скрипт, тогда poetry сможет работать с любым интепретатором в системе.
Можно экспортировать из poetry все зависимости в формате requirements.txt, и потом в докере просто юзануть pip:
poetry export --without-hashes > requirements.txt
pip install -r requirements.txt
+ у докера есть multistage, я обычно отдельно собираю venv при помощи poetry и копирую его (venv) в целевой образ на следующей стадии
классный видос, спасибо! но из того, что я увидел, не видно особой разницы с pipenv (в работе с окружением)
Poetry по PEP
www.python.org/dev/peps/pep-0518/
Когда будет плейлист по созданию телеграм бота на пайтон?))
Не рассказал как удалить пакет со всеми зависимостями одной командой :-(
Для чего нужен файл `poetry.lock` так и не понятно осталось
Эх, вот раньше посмеивался над историями о сношениях с клиентами на тему вменяемой постановки задачи. Но вот пришел май, а с ним и пора дипломов и я уже жалею, что отдал паяльник из загажников. Ибо вылазят всякие: "ой, а подскажи, почему у меня ничего не работает" и т.д.
Вроде и помочь советом не сложно, если приходят, но когда просят накидать примерную стуктуру бд (без вменяемого объяснения логики проекта), ты кидаешь то, как ты это понял, на что тебе полтора часа втирают, что это вообще не то, и система должна работать по другому. И по итогу, когда ты начинаешь задалбывать вопрошающего, пытаясь понять, что он вообще в итоге хочет, оказывается, что "А, ну в целом да, подходит"
(Сорян, накипело)
Axaxaxax
Подскажите, пожалуйста, какую консоль вы используете и шрифт? Привлекли очень вкладки)
За видео лайк!
Годный контент как всегда 😊
Это Windows Terminal, внутри WSL2. Тема одна из стандартных в Windows Terminal
если есть проект с poetry как все эти зависимости к себе подгрузить или этого всего не нужно?
poetry install - установка всех зависимостей, которые прописаны в текущем проекте
@@t0digital спасибо
Алексей, добрый день. Подскажите используете ли вы Poetry в сочетании с Pyenv?
Не пользуюсь pyenv, но ничего против не имею:)
@@t0digital Спасибо за ответ.
О, прикольно!
Подскажите как в докере запускать poetry ?
Установить его в контейнере и запускать так же как и вне докера
Если есть пример dockerfile буду благодарен
Я копирую все файлы в рабочую директорию, но после установки зависимостей , вываливается ошибка does not contain any element
универсальный способ решения почти любого вопроса, идем в гугл и начинаем с поиска наиболее очевидного вопроса, в твоём случае «poetry docker»
первая ссылка stackoverflow.com/questions/53835198/integrating-python-poetry-with-docker
там есть пример Dockerfile
Также гугли «does not contain any element +poetry». Например вот что находится github.com/python-poetry/poetry/issues/1227
Мой порядок действий :
1. Скачиваю poetry с помощью curl
2. Ложу в. Env путь к poetry
3. Определяю рабочую директорию
4. Копирую poetry.lock и poetry.toml в текущую директорию
5. Вызываю poetry install .
6. Запускаю main файл.
Ошибка уже на последнем пункте. Не понимаю что не так.
Супер;)
Бомба!
Получше чем pipenv?
Наверное я что то пропустил, но, куда делся macbook на M1? )))
с ним все ок)
хех, вы глубоко капаете с зависимостями =) Большинство просто устанавливае и махает рукой как Микки Маус)
Или как Димон "Тапок заминированный", ваще п..ю
Прикольно, npm для питона, буду пробовать.)) А то что он зависимости в домашнюю директорию в кеш устанавливает означает, что все зависимости из разных проектов будут в одном месте храниться? И если в разных проектах используются разные версии одной библиотеки, то в одном месте в этом кеше будут храниться 2 разные версии этой библиотеки, на каждую из которых будет ссылаться проект, который её использует, я правильно понимаю?
он зависимости устанавливает внутрь виртуальных окружений. Просто директории с оными лежат не в корне проект а в кэше. Но директории для всех проектов свои.
@@peskovdev То есть, к примеру, есть два разных проекта, которые используют бибилотеку requests. Для каждого проекта данная библиотека будет отдельно лежать в отдельном кэше или будет один кэш, в котором будет лежать эта библиотека и оба проекта будут брать её из этого одного кэша?
@@vovergg у каждого проекта свой отдельный кэш
Балдеж!
Спасибо, как всегда полезно. Надо будет глянуть. Всех интересует почему пересел на Linux и где M1. Меня это тоже интересует кстати. M1 уже на свалке истории? Linux победил MacOS? Ждём видео про M1 ;)
расскажу в следующем видео:)
Это виндовс
Это винда десяточка с WSL или WSL2.
UPD. Ну и новый вендовенький терминальчик)
да:)
@@t0digital кстати мелкософт очень приятно все это дело интегрировали. Тестил, но все же остался на NixOs
ил даже - hatch?
Объясните, пожалуйста, в чем прикол хранения виртуального окружения в .cache, а не рядом с проектом?
Видел ниже, что это правится настройкой конфига, но все же интересно понять логику создателей.
глубокого смысла тут нет, но некоторое удобство есть, например, часто проект состоит из какой-то вводной директории, в ней поддиректория с документацией, поддиректория со скриптами запуска, поддиректория с исходниками и тд. Иногда рядом с ними кладут venv папку, иногда в директорию с исходниками, постоянно путаешься -- а с вынесенной наружу папкой с единой командой запуска путаться не надо будет. Плюс директория с окружением выпадает из поиска grep по проекту, что тоже удобно. Это мои личные бенефиты от этого, возможно у кого-то есть другие мысли:).
@@t0digital спасибо за объяснение)
а вообще мне кажется большая часть функционала poetry (кроме красивого дерева зависимостей разве что) перекрывается IDEшкой
Было бы супер, если бы эта или подобная тулза могла изолированно устанавливать системные зависимости для C пакетов. Часто возникают проблемы при установке, например, mysqlclient, lxml, pillow. Все они компилируются при установке и зависят от системных lssl, zlib и т.п. Автоматизировать развертывание можно, конечно, через Docker, но лично мне чаще удобнее работать просто с venv/poetry.
Посмотри в сторону conda, может как раз подойти
Привет Голобурдин! Как там с буком, новые впечатления / проблемы?
сделаю следующее видео об этом
Привет а у тебя есть видео на канале связанное по python вообще просто интересно в каких проектах ты участвовал, что вообще можно делать при помощи python? Да и вообще эта тема была бы интересна новичкам чтобы они понимали зачем учат python и что они могут делать на нем? Так дополнительная мотивация для многих, все таки как ни крути сайтов на Django очень мало, но наверное есть же интересные сферы где его также могут использовать кроме big data и data scince ?
Python по ряду рейтингов -- самый популярный язык программирования на планете. Что на нем не делают -- мобильные приложения (но делают бэкенд под мобильные приложения), низкоуровневый софт (например, драйверы или операционные системы -- скриптовые языки не предназначены для этого), десктопные приложения с окошками делать можно, но на практике это тоже так себе затея. Что делают -- любые серверные приложения, парсеры, решают задачи администрирования серверов, просто решают свои жизненные задачи, под это скриптовые языки и в частности пайтон отлично подходит. Писать быстро и приятно. Потому для него пишут много оберток под софт, написанный на более низкоуровневых технологиях -- задачи машинного обучения и тп, например.
Хотелось бы задать наверное общий вопрос: Есть плагины для того же пичарма и тогда не нужно будет отдельно вести зависимости для разработки (они будут в конфиге IDE), зависимости для библиотек на том же pypi пишутся. Есть ли какая-то острая необходимость в использовании подобных инструментов? (если я пишу не в vim или vscode? =) хотя для последнего тоже полно плагинов с линтерами и управлением зависимостями)
максимально странный вопрос. Я предположу, что вы никогда не работали в команде или на серьезном проекте. Вам надо углубиться в вопрос, невозможно работать над совместным проектов без подобных вещей.
Очень интересно, почему не на М1?)
Пользуюсь обоими ноутами. Планирую сделать отдельное видео про М1 и Thinkpad
@@t0digital Спасибо большое за ответ! Спасибо за очень полезное видео) Как всегда на высоте =)
@@t0digital на thinkpad Linux ?
@@yariklan это винда с WSL2 и Windows Terminal
Блин, прикольная штука, хотел её пощупать, но никак руки не доходили)))
Сижу на pipenv и радуюсь. Poetry пробовал - не зашло. Один весомый фактов в плюс pipenv - на Heroku поддерживается из коробки в отличии от Poetry с которым нужны танцы с бубном. Значит не просто так.
Спасибо за ультимативный гайд)
npm для python. Хз куда его пока увязать в рабочую схему conda+pip, нужно подумать, вещь занимательная...
Привет)
А почему ты сравнивал Poetry с Regular PIP, а не с Pipenv к примеру ?
Просто Pipenv довольно старый, решает очень много проблем, которые были с pip and requirements.txt и практически все что есть в Poetry там есть тоже.
На сегодняшний день я бы дал предпочтение Poetry из-за того, что с ним очень просто публиковать библиотеки. Так же есть парочка Issues, из-за которых сложно поставить некоторые пакеты. Но так ли он хорош в Production как и Pipenv?
Poetry лучше, потому что pipenv практически умер: критические ошибки не исправлялись годами. Из-за этого были конкретные проблемы в проде. С poetry таких сюрпризов ещё не было.
А как тебе pip-tools?
Как я собираю текущий продукт: сначала npm install одну вещицу, потом сгенерировать клиент - yarn build, и наконец, установить зависимости, чтобы локально потестить - pip install -r requirements.txt... Я уж молчу сколько манипуляций надо сделать для тестирования. Пргммрване - это здрво
Pessimistically, apparently, the oh-so-"awe-inspiring" confirmation of your Sales Incentive payment has apparently been "processed."
Круто
А где мак на м1?
Oh dear, a system error has caused the transaction to wander off to an invalid email address.
пасиба
pipenv мне кажется круче и минималистичней
Где Air, что за зрада ?
Вы не правильно используете pip. Не нужно фризить в requirements.txt. В requirements.txt должны быть только зависимости вашего проекта, а полные зависимости должны быть во freeze.txt. Тогда никаких проблем с удалением или обновлением пакетов не возникает.
вы не правильно используете pip, используйте poetry:)
Почему они все пишут виртуальное окружение куда-то к дяде черту в трещину? В чем глубинный смысл? Это же ПЛОХО.
Я аж подписался
Благодарю:)!
чтоп, так это же типо cargo
а что с м1?
всё хорошо, пользуюсь обоими
м1 дожевывает ssd ))
@@Nachmed Не пугай так, у самого m1 - яблоко обещало исправить проблемы с памятью
Как yarn
Оч похоже на ярн)
На винду перешел?
Пользуюсь и виндой, и маком