Комментарии 35
# в requirements.in основные зависимости
# в requirements.txt уже полные зависимости как после freeze
uv pip compile requirements.in -o requirements.txt
uv pip sync requirements.txt
# можно просто использовать pip-tools
# но uv делает то же самое гораздо быстрее
Да и Poetry, вроде, сейчас уже считается не слишком модным, все хвалят uv.
Выкиньте pip/poetry и заюзайте uv.
Там есть и установка питона, и lock файлы и куча других преимуществ.
например, какие у uv преимущества перед poetry кроме скорости?
Кроме скорости (которая очень важна в CI) - одной командой можно развернуть себе окружение, поставить нужную версию питона и т.д.
Ну и на него сейчас много проектов переводят (и opensourse и коммерческих).
А в poetry, что 10 команд чтобы развернуть себе окружение?
К тому же в поэзии есть команда для активации вирт. окружения в отличии от uv
Ну и на него сейчас много проектов переводят (и opensourse и коммерческих). - Все прыгают с обрыва и я прыгну
На Вашу аргументацию могу только пожелать удачи в сидении и дальше на питоне 3.11 и poetry 1.x.x в конце 2025 года)))
Так я искренне хочу уловить плюсы перехода на uv
Момент по скорости ясен, я спросил есть ли что-то еще, по факту ваших ответов судя по всему нет (без негатива).
Если есть у кого что добавить, я бы почитал, так как действительно интересно.
В uv резолвер зависимостей работает не совсем так как в Poetry, можно более гибко настроить, чтобы не ругался на ограничение сверху, например. Некоторые авторы библиотек любят зарезать версию питона сверху, типа <3.11, и это ломает резолвер зависимостей Poetry, если в других зависимостях версия питона сверху не ограничена. Ограничивать версию питона сверху - это вообще плохая практика, не надо так делать без серьёзной необходимости, вызванной совместимостью C-API и т. д. Но даже в scipy, numpy, которые сильно зависят от C-API, от этого отказались после долгих дискуссий. Контекст: https://iscinumpy.dev/post/bound-version-constraints/
В Poetry удобнее чем в uv обновлять и бампить версии зависимостей. В остальном uv лучше.
Скорость работы uv просто на порядки выше чем Poetry, особенно на огромных графах зависимостей. Он работает мгновенно там где Poetry может тупить минутами.
А что, .venv/bin/activate уже заблокировали на законодательном уровне и обязательно нужно придумывать uv activate? Если нужно что то запустить всегда есть uv run который незаметно для пользователя активирует окружение при запуске любой команды. А если нужно что то запускать несколько раз и каждый раз лень вводить uv run, все активируется по старинке потому что под капотом там обычный venv и знакомое для всех решение
Расскажите ещё о том, какие общепринятые библиотеки надо выкинуть и какие надо вместо них юзать, я с удовольствием послушаю
А про другие инструменты я и не говорил)
Просто странно вот что:
Статья для начинающих -> новички почитают статью и начнут пользоваться тем что тут написано. И только потом узнают про инструмент, который объединяет несколько инструментов, работает быстрее, активно развивается, на который немало людей переводят сейчас свои проекты и т.д.
[tool.poetry]
Здесь статья сразу палится, что устарела на год, потому что в Poetry 2.0 этот [tool.poetry] уже положено выкинуть за ненадобностью
вы перечисляете только прямые зависимости
Это принципиально ничем не отличается от вручную написанного requirements.txt
Умные группы
Здесь снова статья палится, что устарела: это уже фича не Poetry, а PEP 735
Семантическое версионирование
caret это конечно удобно, но никто не мешал писать pandas>=1.5.3,<2.0 и в старом добром requirements.txt (а начиная с Poetry 2.0 всё равно именно так и придётся писать, потому что [tool.poetry.dependencies] уже положено выкинуть за ненадобностью)
Lock-файл всегда нужно комитить в репозиторий!
А документация намекает что не всегда
Если работает локально — будет работать и на проде.
Нет, потому что разные ОС никто не отменял (особенно если у разработчиков макбуки)
poetry shell
И здесь статья в третий раз палится, что устарела, потому что эта команда уже давно не существует
FROM python:3.11-slim
Ага, значит статья устарела не на год, а на два года 🙃
но формат записи зависимостей внутри него специфичен именно для Poetry
Здесь статья продолжает палиться, что устарела, потому что уже не специфичен
Спасибо за развернутый комментарий! Чувствуется, что вы уже плотно работаете с Poetry 2.0 и новыми стандартами.
Однако цель статьи — помочь новичкам, которые прямо сейчас сидят на requirements.txt и pip, перейти на более удобный инструмент. Подавляющее большинство проектов и туториалов в сети всё ещё используют синтаксис [tool.poetry] (версии 1.x), и именно с ним читатель столкнется в 99% случаев. Грузить их сразу PEP 621 и миграцией на 2.0 — значит отпугнуть сложностью.
По пунктам:
Lock-файл: Для конечных приложений (а статья ориентирована на них, боты/сайты) комитить лок — это best practice. Для библиотек — да, не стоит, но это отдельная тема.
OS: Лок-файл решает проблему версий пакетов. Проблему бинарных сборок под разные архитектуры решает Docker (о чем и сказано в конце).
Python 3.11: Это актуальный LTS релиз, на котором крутится огромная часть продакшена.
Ваше дополнение про Poetry 2.0 очень ценное, оно показывает вектор развития инструмента. Спасибо!
Подавляющее большинство проектов и туториалов в сети всё ещё используют синтаксис [tool.poetry]
И не надо делать ситуацию ещё хуже, захламляя интернет ещё одной заведомо устаревшей статьёй, запутывающей новичков
Грузить их сразу PEP 621 и миграцией на 2.0 — значит отпугнуть сложностью.
Грузить их заведомо нестандартным и устаревшим [tool.poetry] — значит отпугнуть запутанностью
Я понимаю что статью уже все привыкли писать нейронкой, но в комментариях то зачем её использовать так явно? Понимаю что может не хватать своих знаний и тут это норм, но весь текст?
Чел, хватит писать комментарии через LLM.
Как же вы задрали уже. Все эти смешные ролики про то что люди не могут общаться и при любом удобном случае пишут в приложение "чатгпт, он написал мне такой то комментарий, как мне ему лучше ответить", уже нихрена не смешные. Иногда хочется чтобы чатгпт сказал "остановись, дурак, и подумай что и зачем ты делаешь. Встань и посмотри в стену 5 минут, поразмышляй о жизни"
вот тоже заметил что у этого автора куча всего устаревшего, плюс часто встречает однобокость, например, lock файлы это не только фича poetry и т.п.
Статью нейросеть написала (это очень и очень заметно можно не отрицать) естественно она обучена на старых данных)
она не просто устарела, она явно написана ИИ – больше всего это заметно по ультрапафосным заголовкам типа The Old Way, особенно так любит делать Gemini
Можно вручную pip'ом все делать (в virtualenv), можно poetry. еще есть uv, а еще есть hatch/hatchling. Таки что есть самый-самый right-way? (у меня самого куча проектов и каждый по разному сделан, после того как узнал про poetry - что-то и на нем было :-))
Ну и вот эта вот строчка прямо радует:
curl -sSL https://install.python-poetry.org | python3 -Пакет ведь есть в pypi и можно красиво ставить через pipx: pipx install poetry - и это строчка с офсайта. Зачем советовать такой опасный и грязный метод через curl | python ?
О боги!!! Я нашёл это крутое объяснение, зачем нужен poetry и чем он лучше pip. Можете смеяться, но не всем это очевидно. Автору респектище!
Для себя нашел следующее решение, не зависящее от вчено-изменяющейся инфраструктуры инструментов. environment.yaml для независимого от хоста окружения и не Pip зависимостей или Pip пакетов, но с бинарными запчастями. Потому что например использовать numpy в Ubuntu AMD CPU, а девелопить в MacOS M4 - то еще развлечение со сборкой из исходников. setup.cfg где отдельно прописаны пакеты для основного модуля, и дополнительные, подлежащих установке через package[extra-name] синтаксис, например pip install -e .[test] сделает текущий модуль доступным для редактирования на месте, установит все нужные запчасти. DevOps (или пользователь) берет модуль, выясняет своими путями какие версии пакетов его устраивают и делает requirements.txt из 10 строк + constaints.txt для своего конкретного деплоя.
#isllm?
Poetry вышел в 2017 году. Для кого эта статья? Для новичков - так им лучше сразу uv учить. Остальные уже этот ваш поетри давно попробовали
А вот что делать если у тебя забанили пакет (антивирус, например за текст)?
Update не пройдёт, т.к. uv и poetry анализируют все зависимости.
И ты такой радостный - добро пожаловать в 2013, ещё до pipenv... (антивирус отключить можно, но не нужно)
Нейрослоп детектед
Гайс, не ставьте плюсики статье
Автору не лайк а лайкище

Если не охота никуда переходить есть пару удобных фишек в requirements.txt
Один файл можно влючать в другой и фиксировать версию можно нежестко с помощью ~=
например в requirements_dev.txt может быть что-то типа того
-r requiremets.prod
pytest ~=7.0.0тогда у вас есть разные файлы для установки окружений и свежии версии брать я без мажорных изменений.

Poetry vs Pip: Почему пора перестать использовать requirements.txt