Aragaer
я использую пипенв потому что pipenv shell удобнее, чем . venv/bin/activate. Потому что из него можно выйти по C-d, а там надо deactivate
Aragaer
других отличий на самом деле для себя не вижу
Dima
Вообще основной профит pipenv в отслеживании зависимостей, а не в управлении venv'ами
1. В каких задачах необходимо отслеживание? 2. Допустим я фиксирую все зависимости для сервиса/программы м забываю про них. Зачем мне отслеживание?
Dima
Я не против pipenv , но для себя не вижу практической пользы. Вижу избыточность и хайп
Dima
других отличий на самом деле для себя не вижу
Вот и я про это, для рутинных задач он ненужен. Нужен для специфических
Oleg
1. В каких задачах необходимо отслеживание? 2. Допустим я фиксирую все зависимости для сервиса/программы м забываю про них. Зачем мне отслеживание?
1. Практически всегда необходима фиксации версий всех зависимостей (если только это не билиотека) 2. Как потом их обновлять? Как понять почему в requirements.txt есть та или иная зависимость если ты явно ее не используешь?
Dima
1. Практически всегда необходима фиксации версий всех зависимостей (если только это не билиотека) 2. Как потом их обновлять? Как понять почему в requirements.txt есть та или иная зависимость если ты явно ее не используешь?
1. Это не задача. Так и есть, я легко делаю фиксацию через pip. Pipenv тут избыточен 2. Ну легко и просто: через pip апгрэйдим и дальше фиксируем. Операция по обновлению достаточно редкая, поэтому опять не вижу выгод тут у pipenv. Были бы такого рода операции частыми и очень вариативными по версиям библиотек, тогда он облегчил бы работу В первом сообщении я и указал, что pipenv для специфических задач. А на хайпе я указал потому, что часто его вижу необоснованно используемым в супер типовых задачах
Dima
И ещё важно учесть, что докер твердым аргументом против pipenv, Если он используется
Dima
Я его везде в работе использую
Dima
Pipenv вообще места не нахожу
Maxim
я использую пипенв потому что pipenv shell удобнее, чем . venv/bin/activate. Потому что из него можно выйти по C-d, а там надо deactivate
Для меня пипенв удобнее, что зависимости сами записываются. Не надо pip install, pip freeze, копировать, вставлять в requirements.txt
Co(n)stantine👨‍🔬
А что докер?
Хотел спросить кстать, пользуешься Docker'ом?
Алексей
А что докер?
Докеру не нужны всякие виртуальные окружения, там всё глобально в контейнер ставится
Aragaer
но я не делаю pip freeze, а содержимое requirements.txt у меня написано руками
Maxim
Но я пока перестал юзать пипенв. Некоторые инструменты завязаны на пип.
Maxim
Хотел спросить кстать, пользуешься Docker'ом?
Да. Но я в нем не разрабатываю. Только деплою.
Aragaer
еще раз - pipenv shell это единственная команда пипенва, которую я использую. Там внутри - просто pip
Pavel
пипенв еще чуток удобнее в случае использования приватных репозиториев
Aragaer
не слышал о таком
Oleg
не слышал о таком
Когда делаешь cd в папку venv автоматически активируется
Oleg
плюс удобное управление переменными окружения
Aragaer
вообще, вот пипенв не позволяет иметь несколько разных венвов в одном проекте
Pavel
пробовал использовать direnv?
хм. а оно с oh-my-zsh как дружит, не в курсе?
Aragaer
у меня было как-то раз, что у меня были .venv и .venv_pypy
Aragaer
но наверно нет, не хочу чтобы какой-то скрипт автоматически что-то за меня делал
Pavel
хм. оффтоп - как скинуть ссылку так, чтоб телеграм не пытался в пол-монитора превью показать?
pryid
Pavel
однако. спасибо.
Pavel
хорошо
хм. как я понял, его можно почти с любым virtualenv'ом сцепить. удобная штука, надо попробовать.
Kairat
https://youtu.be/YErAfIWC0wk
Oleg
хм. как я понял, его можно почти с любым virtualenv'ом сцепить. удобная штука, надо попробовать.
В принципе, да. Но я использую все дефолтное. Просто кладу файл .envrc типа layout python python3.7. Ну и переменные окружения туда засовываю если надо
Kairat
Здесь вот рассказывают чем они отличаются
Jøhn
хм. а оно с oh-my-zsh как дружит, не в курсе?
А мне вот интересно есть ли env дружащий с fish
Dima
Ну легко и просто: через pip апгрэйдим и дальше фиксируем Тут возникает проблема с dev-пакетами. Чтобы сделать pip freeze тебе надо развернуть чистый venv, установить все из requirements.txt, руками установить новые зависимости и потом сделать pip freeze > requirements.txt
Тут возникает проблема с dev-пакетами. Чтобы сделать pip freeze тебе надо развернуть чистый venv, установить все из requirements.txt, руками установить новые зависимости и потом сделать Это надуманная проблема, если такое и происходит(лично я вообще редко тяну еще какие-то ненужные для логики сервиса пакеты). И это разовая операция. РАЗОВАЯ!
Dima
дальше все за нас делает CI/CD. Если не делает, то стоит занться его настройкой , а не тратить время на хайп
Aragaer
у меня есть requirements-dev.txt, в котором первая строчка -r requirements.txt
Aragaer
а еще у меня есть requirements-travis.txt
Dima
Проблема с отсутствием тулов для нормального менеджмента всем этим барахлом.
в нормальной организации рабочей директории барахла минимум, если есть
Dima
что значит разовая? Зависимости в проекте имеют свойство меняться, добавляться, удаляться
ну так и меняется это ровно столько же раз в CI/CD, сколько меняется, добавляется, удаляется. Если это часто происходит, то вопрос к разработчику, чем он думал раньше и о чем
Oleg
ну так и меняется это ровно столько же раз в CI/CD, сколько меняется, добавляется, удаляется. Если это часто происходит, то вопрос к разработчику, чем он думал раньше и о чем
А как CI/CD решает эту проблему? Ты имеешь в виду, что разработчик добавляет зависимости в requirements.in, CI/CD потом генерирует lock-файл (requirements.txt) и коммит его в репозиторий?
Dima
А как CI/CD решает эту проблему? Ты имеешь в виду, что разработчик добавляет зависимости в requirements.in, CI/CD потом генерирует lock-файл (requirements.txt) и коммит его в репозиторий?
я подразумеваю, что всю рутину по сборке и доставке надо описывать в CI/CD. То что мы обсуждаем о pipenv и есть эта рутина для CI/CD. Еси понадобится описать какую-то кастомизацию одного сервиса через разные зависимости и их версии(что является редким случаем несущим больше проблем, т.к. поддержка такого кода требует много усилий, а соответственно должна быть твердо обоснованной), то эта кастомизация заносится в CI/CD , т.к. он является основным интерфейсом программным и графичексим для сборки и доставки. пользуйтесь pip, venv, отдавайте предпочтение минималистичности и простоте, если отсутствует прямая потребность в усложнении
Tishka17
чет я не уловил
Dima
чет я не уловил
да пох, пользуй pipenv
Tishka17
да пох, пользуй pipenv
чет мне он не нравится
Alex
чет мне он не нравится
он мало кому нравится, кто плотно сталкивался с управлением зависимостями
Dima
Tishka17
вариант с venv + pep freeze мне чет больше понравился
Oleg
он мало кому нравится, кто плотно сталкивался с управлением зависимостями
Да, к pipenv'у есть много вопросов, но все же это лучше чем pip freeze
Oleg
зависимости прямым образом относятся к сборке, ну же
Зависимости это воспроизводимость окружения в первую очередь
Oleg
сборка как один из кейсов использования этого
Tishka17
мы пробовали вариант хуже - никакого pip, все ставится из своего репозитория yum. В него пакеты собирабются из pip в полуавтоматическом режиме
Tishka17
зависимости прямым образом относятся к сборке, ну же
да, зависимости - это то, что должен указать разработчик для сборки
Dima
Зависимости это воспроизводимость окружения в первую очередь
так собираешь то ты что? собираешь окружение...
Oleg
так собираешь то ты что? собираешь окружение...
ну ок. Давай все же вернемся к вопросу о том как надо управлять зависимостями с помощью pip и CI/CD
Kairat
Батл ?
Dima
ну ок. Давай все же вернемся к вопросу о том как надо управлять зависимостями с помощью pip и CI/CD
да пох, лучше расскажи о твоем роде задач, при которых так нужен pipenv. Который дает гибкое управление зависимости , их отслеживаниаем. А это значит , что и основным родом твоих задач должно быть какое-то управление зависимостями и их отслеживанием
Dima
Батл ?
раунд епт
Tishka17
В итоге отказались от этого?
в итоге при очередном рефакторинге забили. Как и на фриз, просто релизится docker-образ, каждый тестируем
Dima
file lock
Tishka17
При появлении багов - фиксируем максимальную версию и ладно
Maxim
file lock
Что?
Tishka17
file lock
ты вообще в курсе что такое фиксация зависимостей?
Maxim
Кажется, нет