@spbpython

Страница 207 из 785
Serge
22.11.2016
11:26:52
Zart
22.11.2016
11:27:26
да ну нафиг... я сам лучше выпилюсь. какую-то ерунду вечно городите 8\

Serge
22.11.2016
11:27:30
а pip нужен чтобы удобно брать тарбол
точно так же, как yum нужен чтобы удобно брать системные пакеты

вот есть у тебя билд. ты готовишь систему для его запуска и запускаешь. зачем мне для этого setup.py в проекте?

Google
Serge
22.11.2016
11:28:15
ну вот зачем, объясни мне.

Zart
22.11.2016
11:28:42
чтобы вынести питоновый код из билда вообще напрочь

Serge
22.11.2016
11:28:46
при том, что еще придется следить на ревью, чтобы туда никто какого-нибудь кода своего не вписал

у меня вся автоматизация на ansible

Zart
22.11.2016
11:29:35
а это вообще ортогонально...

Serge
22.11.2016
11:29:37
и сборка и provisioning целевой системы и деплой

ничего не запускается, если ansible не попросил это запустить

весь код воспринимается как статичная субстнация

Zart
22.11.2016
11:30:41
это правильно, да

Serge
22.11.2016
11:31:08
ну вот и в этом контексте setup.py не впился вообще

Zart
22.11.2016
11:31:39
я думал у тебя репа с питоновым приложением, в которое запхан еще и рек.тхт сверху

Serge
22.11.2016
11:32:00
более того, ansible запускается только из контейнера, а файлики .in, которые я показал, это чтобы сделать .txt для этого контейнера

Google
Serge
22.11.2016
11:32:22
Zart
22.11.2016
11:32:31
ват

Serge
22.11.2016
11:32:48
на .in смотрят девелоперы, на .txt — автоматика

более того, ansible запускается только из контейнера, а файлики .in, которые я показал, это чтобы сделать .txt для этого контейнера
и в этот контейнер еще ставится npm и bower закрепленных версий и всякие хедеры в систему. и вся автоматизация работает только из него:)

Zart
22.11.2016
11:34:40
всё. не хочу больше вникать. 8\

Serge
22.11.2016
11:34:56
:) А — абстракции

Vitali K.
22.11.2016
11:35:27
а что делает ansible, если все в контейнерах уже настроено в Dockerfile?

Serge
22.11.2016
11:35:32
и я всё еще не понял зачем мне setup.py :)

Zart
22.11.2016
11:35:50
я всё еще не понял структуру твоего кода

и причем тут вообще ансибл

Serge
22.11.2016
11:36:12
а что делает ansible, если все в контейнерах уже настроено в Dockerfile?
собирает контейнеры, деплоит, готовит систему к запуску контейнеров

Zart
22.11.2016
11:36:43
да нет, я именно эту часть твоей инфраструктуры понять не могу

Serge
22.11.2016
11:36:51
всё делается по одному шаблону, не важно какого рода проект: build. ship. run.

Zart
22.11.2016
11:37:02
докеры/ансиблы - это всё хорошо, но уровень выше

Vitali K.
22.11.2016
11:37:33
собирает контейнеры, деплоит, готовит систему к запуску контейнеров
если бы использовался EB, то работы для ansible было бы меньше, да?

Serge
22.11.2016
11:38:01
1. сборка проекта, в резултате артефакт 2. доставка артефакта на систему. 3. подготовка системы для запуска артефакта. 4. запуск/рестарт всего говна

шаг 4 бывает в виде rolling update

но у меня не только aws

Google
Vitali K.
22.11.2016
11:38:38
я все время забываю )

У меня сложилось впечатление что Zart часто говорит про важность setup.py, но я не понимаю зачем мне это в работе

Serge
22.11.2016
11:40:18
вот я всё ещё не услышал зачем оно мне

Vitali K.
22.11.2016
11:40:42
или мы чего то не слышим или zart))

Serge
22.11.2016
11:40:56
чтобы скопировать в него requirements.txt в другом формате и огрести еще одно место, куда джуниор может запихнуть какой-нибудь код?

Zart
22.11.2016
11:41:16
а sudo pip install делать любители есть?

GNU/Docker
22.11.2016
11:41:49
R

GNU/Docker
22.11.2016
11:41:57
был им пока не разъебал пип.

Serge
22.11.2016
11:42:52
а sudo pip install делать любители есть?
ну, в Dockerfile так можно;) даже иногда нужно:)

Zart
22.11.2016
11:43:45
в сетапе перечисляются зависимости обязательные для работы данного кода. т.е. если у тебя есть например import django.. то в setup.py нужно прописать джангу

Serge
22.11.2016
11:44:07
ну, в Dockerfile так можно;) даже иногда нужно:)
понятно, что на системе, которую ты не пересобираешь каждый раз, так делать нельзя

в сетапе перечисляются зависимости обязательные для работы данного кода. т.е. если у тебя есть например import django.. то в setup.py нужно прописать джангу
и если оно у меян написано в requirements .txt и ставится в личный venv процесса, зачем мне тогда писать это setup.py?

Zart
22.11.2016
11:45:07
но к примеру то же джангоприложение можно гонять сотней способов - например через гуникорн, черрипай, ювсги какой из них выбрать - решает сисадмин, а не разработчик, поэтому в сетапе зависимость на такие пакаджи не ставят а для конкретного деплоя скажем нужен, и тогда это идёт в рек.тхт

Serge
22.11.2016
11:45:56
ты можешь сделать requirements-prod.txt , например

Zart
22.11.2016
11:46:15
а если я деплою не пипом? 8)

Serge
22.11.2016
11:46:34
но использовать паралелльно setup.py и requirements.txt - плохая практика, ведущая к путанице

Google
Zart
22.11.2016
11:46:53
нет, непонимание роли requirements.txt - это плохая практика

Serge
22.11.2016
11:47:18
а если я деплою не пипом? 8)
да деплой чем хочешь. нет смысла пихать в проект решения админа. ты правильно сказал, гонять этот проект можно как угодно и сам проект не должен об этом знать ничего

Zart
22.11.2016
11:48:30
вот положим ты выложил свои репо со своими исходниками я хочу себе их задеплоить ну и я ставлю например себе твой код: pip install git+... ImportError? втф?

Serge
22.11.2016
11:48:52
по умолчанию requirements.txt и setup.py несут копии зависимостей. даже часто в setup.py читают из requirements.txt

это устоявшаяся практика

Zart
22.11.2016
11:49:28
setup.py пишет девелопер и объявляет что нужно для работы кода вообще requirements.txt пишет сисадмин под свою систему, выбирая нужные ему версии и транзитивные зависимости

Serge
22.11.2016
11:49:46
расширять с помощью дефолтного requirements.txt инфу из setup.py - плохая практика, повторюсь, ведущая к путанице

Zart
22.11.2016
11:50:04
те кто такое делают - тупо как обезьяны фигачили pip freeze, не вникая в то, что творят

Serge
22.11.2016
11:50:21
setup.py пишет девелопер и объявляет что нужно для работы кода вообще requirements.txt пишет сисадмин под свою систему, выбирая нужные ему версии и транзитивные зависимости
это твое личное представление и возможная договоренность внутри твоего проекта. но так это никто в ральном мире не вопринимает. никогда.

Admin
ERROR: S client not available

Zart
22.11.2016
11:51:19
давай ты не будешь сейчас рассказывать за весь мир?

https://packaging.python.org/requirements/#requirements-files

https://caremad.io/posts/2013/07/setup-vs-requirement/ тот же дональд пытается ту же мысль донести

он правда под другим углом это подаёт

Serge
22.11.2016
11:58:33
https://packaging.python.org/requirements/#requirements-files
я не вижу тут твоей мысли. я вижу только то, что в setup.py идет мой .in это понятно

https://caremad.io/posts/2013/07/setup-vs-requirement/ тот же дональд пытается ту же мысль донести
Python Libraries - setup.py Python Applications - requirements.txt это вот ровно моя мысль

Zart
22.11.2016
11:59:42
угу. правда с терминологией всё ужасно

Serge
22.11.2016
12:00:01
тебе не нужен setup.py, когда у тебя есть полный requirements.txt

вот именно то, о чем я говорю

Google
Zart
22.11.2016
12:00:36
у меня есть мечта - чтобы ИДЕ наконец-то начали делить проекты на проекты с кодом (либы, приложения) и на проекты под конкретный деплой (набор либ/приложений)

нет, тебе надо -e в рек со ссылкой на пакадж 8)

Serge
22.11.2016
12:01:00
при этом, если тебе так удобно, ты можешь добавить requirements-prod.txt для твего деплоя и делать pip install -r requirements.txt -r requiremets-prod.txt

это уже хозяин - баррин

Zart
22.11.2016
12:01:32
в моем понимании репа с питоновым кодом не должна иметь requirements.txt вообще

Serge
22.11.2016
12:02:04
в моем понимании репа с питоновым кодом не должна иметь requirements.txt вообще
если это репа распространяемая на github и имеющая широкий лист совместимости - да

Zart
22.11.2016
12:03:04
да в идеале и для личных проектов и кусков больших проектов тоже

Serge
22.11.2016
12:03:21
но если это приложение, конкретное приложение, то там как рах не нужен setup.py, если есть requirements.txt потому что это обеспечение идемпотентности

Zart
22.11.2016
12:03:37
ты там выше про артефакты упоминал - в случае с питоном это вполне относится к колёсам и прочим бдистам

Serge
22.11.2016
12:04:26
но если это приложение, конкретное приложение, то там как рах не нужен setup.py, если есть requirements.txt потому что это обеспечение идемпотентности
вот если у тебя есть свой pypi, и ты собираешь приложение из нескольких пакетов, сделанных другими командами и все такое тогда, у тебя появляется интеграционный репозиторий с requirements.txt

Zart
22.11.2016
12:04:41
именно

"свой pypi" = тупо каталог с колёсами

Serge
22.11.2016
12:05:08
но в реальной жизни, на этот слой абстракции часто удобно забить

потому что оно лишнее

"свой pypi" = тупо каталог с колёсами
и как ты обеспечишь его доступность для всех сборщиков?

а как ты туда релизить будешь?

можно конечно scp поиспользовать

ну ок

но все равно у тебя должен быть артефакторий

причем желательно совместимый не только с питоном

и тут мы приходим к докеру, микросервисам и requirements.txt

Zart
22.11.2016
12:08:21
и как ты обеспечишь его доступность для всех сборщиков?
дома мне хватает либо локального каталога, либо сетевой шары. а если под вебсервером лежит, то и глобально не вопрос

Страница 207 из 785