
Serge
22.11.2016
11:26:52

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

Serge
22.11.2016
11:27:30
вот есть у тебя билд. ты готовишь систему для его запуска и запускаешь. зачем мне для этого 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 — автоматика

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

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

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

Zart
22.11.2016
11:41:53

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

Serge
22.11.2016
11:42:52

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

Serge
22.11.2016
11:44:07

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

Serge
22.11.2016
11:45:30

Zart
22.11.2016
11:45:55

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

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

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

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

Zart
22.11.2016
12:04:41
именно
"свой pypi" = тупо каталог с колёсами

Serge
22.11.2016
12:05:08
но в реальной жизни, на этот слой абстракции часто удобно забить
потому что оно лишнее
а как ты туда релизить будешь?
можно конечно scp поиспользовать
ну ок
но все равно у тебя должен быть артефакторий
причем желательно совместимый не только с питоном
и тут мы приходим к докеру, микросервисам и requirements.txt

Zart
22.11.2016
12:08:21