
Cykooz
08.07.2016
12:23:44

Zart
08.07.2016
12:23:48
полагаю ты пробовал поставить Plone? 8)

Cykooz
08.07.2016
12:24:31

Zart
08.07.2016
12:24:40
до сих пор помню в каком я был шоке, когда увидел размеры того что оно накачало

Google

Zart
08.07.2016
12:25:00
400мб питоновых пакетов, Карл!
ПИТОНОВЫХ

Cykooz
08.07.2016
12:25:10
Но когда уже все пакеты есть в кеше то их "установка" практически ничего не занимает

[Anonymous]
08.07.2016
12:25:11
Вопросик.
Я создал свою папку templates в директории проекта. К ней прописал путь: 'DIRS': [os.path.join(BASE_DIR, 'templates/')]. Как мне собрать шаблоны админки туда же?
Ибо вот такая проблема TemplateDoesNotExist at /admin/login/
Exception Location: /home/daniil/myenv/lib/python3.4/site-packages/django/template/loader.py in get_template, line 43

Zart
08.07.2016
12:25:46
а почему DIRS?
или это внутри нового TEMPLATES дикта?

[Anonymous]
08.07.2016
12:26:06
Разве не там прописывается путь к templates?

Zart
08.07.2016
12:26:17
там раньше вроде глобальный TEMPLATE_DIRS был

[Anonymous]
08.07.2016
12:26:30
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates/')],
'APP_DIRS': False,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
TEMPLATE_DIRS
По умолчанию: [] (Пустой список)
Не рекомендуется, начиная с версии 1.8: Смотрите опцию DIRS для DjangoTemplates.
Список каталогов, в которых будут искаться файлы шаблонов при вызове django.template.loaders.filesystem.Loader в указанном порядке.
Заметим, что эти пути должны использовать прямые слэши, то есть быть в Unix-стиле, а не Windows.
Не рекомендуется

Cykooz
08.07.2016
12:28:13

Zart
08.07.2016
12:28:33

Google

Cykooz
08.07.2016
12:28:35
Хотя это вырожденый случай ?

Zart
08.07.2016
12:28:57
если будешь ставить изи_инсталлом с ключом -m, то будет и в виртуаленве
пипу похуй на виртуаленв
не надо путать
у него просто есть ключик -E для их поддержки, в остальном для него без разницы

Cykooz
08.07.2016
12:30:07
Ну что то тогда мы запутали наше обсуждение - причём тут скрипт генерируемый биладутом и способ установки пакета?
Если билдат замедляет импорты из-за раздутого sys.path - то pip тут ничем не поможет

Zart
08.07.2016
12:31:00
поможет

Cykooz
08.07.2016
12:31:15
А как?

Zart
08.07.2016
12:31:48
билдаут и изи инсталл по дефолту ставят каждый пакет в свой собственный каталог

Igor
08.07.2016
12:31:56

Zart
08.07.2016
12:32:33
билдаут генерит скрипты-врапперы
изя же пихает пути в .pth файл
оба эти варианта меняют sys.path на кучу элементов
пип же ставит с —externally-managed, что ставит пакеты напрямую в site-packages
в итоге в sys.path минимум элементов и импорту не приходится сканировать десятки каталогов

Cykooz
08.07.2016
12:34:06

Zart
08.07.2016
12:34:17
что ты такое говоришь
а что? он будет ставить пакеты одинаково, что в в виртуаленв, что в венв, что в изолированный, что в системный. ничего не меняется кроме префикса
каком проекте?

Cykooz
08.07.2016
12:34:32

Zart
08.07.2016
12:34:45
афк полчаса

Google

Zart
08.07.2016
12:35:14
у пип инсталл есть ключик —egg ;)

Cykooz
08.07.2016
12:36:22
каком проекте?
Ну вот я пилю проект по чётным числам, у него есть свои собственые зависимости. Рядом лежит дургой проект, который я пилю по нечётным числам - он сильно старый и требует другие версии пакетов.
Где должен быть site-packages что бы эти два проекта не посрались?
В целом мне проблема билдаута со скриптом запуска понятно - да неплохо бы как то это оптимизировать. Но кроме как через создание "омлетов" в которых будут симлинки на все нужные скрипту пакеты, я пока не вижу решения. Только вот на винде это наверное не будет работать - там как то с симлинками туго

Zart
08.07.2016
12:39:25

Cykooz
08.07.2016
12:40:10
билдауту как раз симлинки не нужны
Да ему не нужны, но из-за этого раздувается sys.path. Если запилить папку где будут симлинки на нужные пакеты - то можно в sys.path прописать только одну эту папку.

Zart
08.07.2016
12:41:26
понял мысль. так можно, хотя проблематично для неймспейс пакаджей

Cykooz
08.07.2016
12:43:08
В целом я как то не страдал никогда от скорости импорта - это ведь разовая операция. Так что для меня лично в этом нет какой то сложности. Но ради доклада я наверное потестирую скорость запуска в зависимости от размера sys.path ?

Zart
08.07.2016
12:44:24
скорость импорта напрямую влияет на скорость взлёта.
попробуй с PYTHONVERBOSE=1

Fumycat
08.07.2016
12:46:57
Без рут прав

Zart
08.07.2016
12:47:49

Fumycat
08.07.2016
12:48:10
В защиту пипа

Zart
08.07.2016
12:48:26
причем тут пип...
юзер инсталлы добавили в питон 2.6, и сетаптулзы умели их до пипа

Cykooz
08.07.2016
12:51:15
Инстал пакетов на уровне юзера - это тоже слабая подмога при разработке. Как правило нужен инсталл "на уровне проекта", и вот поэтому типичный туториал начинается со слов "Ставим virtualenv..."

Zart
08.07.2016
13:00:13

Cykooz
08.07.2016
13:00:46
скорость импорта напрямую влияет на скорость взлёта.
попробуй с PYTHONVERBOSE=1
Я что то не увидел в консоли что то указывающие на проблемы. Да, он показывает что на импорт например из django он лезет в папку с кешем установленых яиц. Но проблема не в этом как понимаю. Проблема должна быть в том что он должен очень долго искать эту папку перебирая все пути указаные в sys.path. Как увидеть в логах такой вот поиск - я пока не знаю.

Zart
08.07.2016
13:00:50
изя и билдаут юзают первый вариант, связка пип+венв по дефолту юзает 2й вариант

Cykooz
08.07.2016
13:41:12
@zartsoft Я сделал тестик небольшой. Есть проект на билдауте с 80 зависимостями добавляемыми в sys.path. Время работы manage.py help - 1.66 сек.
С помощью спец. рецепта создал "омлет" - папку в которой с помощью симлинков и папок "нормализованы" все пакеты, т.е. они выглядят так как если бы были установлены в site-packages, при этом даже все пакеты с namespace-ами "нормализованы". В скрипте заменил 80 путей добавляемых в sys.path на один путь к этому "омлету". Скорость работы стала - 1.35 сек.
Выигрыш всего 0.3 сек - это мелочи какие то, ради которых нет ни какого смысла отказываться от билдаута.

JPyFoxy
08.07.2016
14:38:52
Когда прочитал 250 стр Лурца

Google

No Name
08.07.2016
14:39:43
Я сверхразум на половину :(

Zart
08.07.2016
14:40:38
я тогда безмозглый

Темный
08.07.2016
14:40:45
нудно пипец

Zart
08.07.2016
14:40:54

Cykooz
08.07.2016
14:40:59
Хм, по запросу Лурц гугл выдаёт на первом месето
``Луртц (англ. Lurtz) — командир отряда урук-хай, посланный Саруманом атаковать Братство Кольца`
И фотки этого чуда ?

Denis
08.07.2016
14:42:14
Lutz != Lurtz

Cykooz
08.07.2016
14:43:54
чтото у меня билдаут запорол неймспейсы 8\
Начиная с версии 2.0 они выпилили из него имитацию venv (зачем она если есть virtualenv), поэтому может возникнуть проблема если в системном питоне стоят какието нужные проекту зависимости. Системные пакеты имеет приоритет над тем что добавляется в sys.path.
Ну а дальше всё просто - например все питонячии пакеты которые ставятся через apt-get ничего не знают про неймспейсы, и потому один zope.interface поставленый в систему ломает весь zope. намеспейс в проекте на билдауте

Admin
ERROR: S client not available

Zart
08.07.2016
14:44:18
я уже понял, да

Cykooz
08.07.2016
14:45:06
Я в этом случае просто устанавливаю zope.interface в системе используя easy_install

Zart
08.07.2016
14:45:39
ну да, это позволяет его деактивировать
билдаут без -N невероятный тормоз

Cykooz
08.07.2016
14:46:38
использую versions.cfg с пином версий всех пакетов - это вообще маст хев

Zart
08.07.2016
14:46:52
у пип теперь есть -c для этого же

Cykooz
08.07.2016
14:46:58
В билдауте есть опция которая вообще не станет ставить пакет если он не запинен

Zart
08.07.2016
14:47:22
-c, —constraint <file> Constrain versions using the given constraints file. This option can be used multiple times.

Cykooz
08.07.2016
14:47:35
+ есть опция которая в конце работы выведет все пакеты которые надо запинить в формате пригодном для copy-paste в versions.cfg

Zart
08.07.2016
14:47:47
pip freeze
8)

Google

Cykooz
08.07.2016
14:48:00
Первую опцию юзаем в продакшен конфиге, вторую в dev-конфиге - радость и благодать

Zart
08.07.2016
14:48:14
пип удобен тем что позволяет итеративно доставлять чтолибо
билдаут надо прогонять на каждом чихе

Cykooz
08.07.2016
14:48:41
pip freeze
pip freeze делает не тоже самое - он выдаёт всё то барахло что ты успел установить в venv, а не то что нужно реально для твоего проекта
пип удобен тем что позволяет итеративно доставлять чтолибо
Ну вот блин, нашёл сложность, как будто ты каждые полчаса ставишь новые зависимости. Прогнать билдаут один разок, когда у тебя есть versions.cfg занимает считаные секунды (на моём проекте с 80 зависимостями и 10-ю секциями в конфиге билдаута - 6 сек)

Zart
08.07.2016
14:53:25
с -N?

Cykooz
08.07.2016
14:53:36
без -N

Zart
08.07.2016
14:53:56
у меня одно яйцо плоны ставится 3 минуты. и это без изменений в пакетах вообще
с -N мгновенно
не могу понять кто мне неймспейс зопы распидарасил 8(

Cykooz
08.07.2016
14:55:10
Если не ошибаюсь, то -N - отключает поиск новых версий пакетов в PyPi. У плона много зависимотей - поиск ковых версий идёт долго. Но если все версии запинены - то билдаут не будет ничего искать

Zart
08.07.2016
14:55:28
плон тащит за собой 250 зависимостей
потому и поставил, как хороший бенчмарк

Cykooz
08.07.2016
14:56:00
Ну да, потому что там было принято не делать комбайны аля джанго ?
ZCA и всё такое

Zart
08.07.2016
14:56:49
всё, нашел виновника 8\
зца няшка, но это осознание приходит далеко не сразу

Cykooz
08.07.2016
14:57:28
Думаю ты согласишься что пинить версии всех зависимомтей - это пярмо обязательно нужно. А потому билдаут проекта без versions.cfg - это сам себе злобный буратино
Да, я ношу в себе это осознание уже много лет, и пытаюсь сильно не шокировать им неокрпшые умы молодых бойцов :)

Zart
08.07.2016
14:58:20
у меня нет настолько анального фетишизма на тему повторяемости билдов, хотя понимаю что штука хорошая
меня устраивает когда зависимости выполняют свои контракты 8)
Эта группа больше не существует