gentoo.ru
python
python@conference.gentoo.ru
Вторник, 22 марта 2011< ^ >
maksbotan установил(а) тему: Пей тон @ Жуй картон || https://gist.github.com/289467 || Логи: http://tinyurl.com/gentoo-py-logs || "Python's a drop-in replacement for BASIC in the sense that Optimus Prime is a drop-in replacement for a truck."
Конфигурация комнаты
Участники комнаты

GMT+3
[00:26:27] maksbotan вошёл(а) в комнату
[02:41:02] maksbotan вышел(а) из комнаты
[09:52:52] krigstask вошёл(а) в комнату
[11:12:28] maksbotan вошёл(а) в комнату
[11:57:45] krigstask вышел(а) из комнаты: Replaced by new connection
[11:57:55] krigstask вошёл(а) в комнату
[12:48:29] krigstask вышел(а) из комнаты
[12:48:44] krigstask вошёл(а) в комнату
[13:03:45] <maksbotan> krigstask: можешь помочь немного?
[13:04:14] <krigstask> Могу посмотреть
[13:04:16] <maksbotan> ок
[13:04:23] <maksbotan> вот смотри, есть flask-приложение
[13:04:37] <maksbotan> состоит из нескольких файлов
[13:04:43] <maksbotan> пока это main.py и testsys.py
[13:04:54] <maksbotan> в main определяется tswebapp
[13:05:08] <maksbotan> и в testsys.py нужно этот tswebapp загружать
[13:05:15] <maksbotan> как лучше это устроить?
[13:05:38] <maksbotan> я сделал пакет со всеми файлами и попытался в testsys.py писать from tsweb.main import tswebapp
[13:05:42] <maksbotan> но он ошибку выдает
[13:05:57] <krigstask> ImportError?
[13:06:27] <maksbotan>     from tsweb.main import tswebapp
ImportError: cannot import name tswebapp
[13:06:44] <krigstask> Импортируй tsweb.main
[13:07:35] <maksbotan> import tsweb.main                                                              
tswebapp = tsweb.main.tswebapp
[13:07:39] <maksbotan> AttributeError: 'module' object has no attribute 'main'
[13:07:53] <krigstask> Гм-м-м
[13:09:24] <maksbotan> к тому же мне кажется это костыль, т.к. придется папку с сайтом в PYTHONPATH добавлять каждый раз
[13:09:29] <maksbotan> подскажи как получше сделать?
[13:09:50] <krigstask> Э-э-э
[13:10:00] <krigstask> А они не в одном комплекте у тебя лежат, что ли?
[13:10:06] <maksbotan> кто они?
[13:10:20] <maksbotan> в одном все, но я запускаю не из папки с пакетом, а из верхней папки
[13:11:24] <krigstask> Тэкс, доступная репка есть?
[13:12:09] <maksbotan> https://github.com/AVBelyy/TSWeb
[13:12:20] <maksbotan> там нету пару коммитов, но суть ясна
[13:13:19] <maksbotan> в testsys.py я позже добавил импорт tswebapp, но пока не пушал т.к. сыро
[13:15:38] <maksbotan> вот смотри, http://paste.pocoo.org/show/357637/ что получается с пустым __init__.py
[13:15:56] <maksbotan> такой импорт будет нужен когда буду разворачивать на FastCGI сервере
[13:16:15] <maksbotan> кстати python tsweb/main.py работает ок
[13:16:46] <krigstask> Хрень какая-то, надо ж было так файлы разбросать
[13:17:03] <maksbotan> ну посоветуй как сделать
[13:17:22] <krigstask> Для этого надо сначала понять, что тут у тебя где, а я пока не осилил
[13:17:35] <maksbotan> давай объясню
[13:17:52] <maksbotan> все что нужно в папке flask, остальное не относится к делу
[13:18:03] <krigstask> Сделал бы, как в gruq: файлики в static, основные исходники в корне, данные в data
[13:18:41] <maksbotan> хм
[13:18:51] <maksbotan> по моему плану папка tsweb/ и является корнем
[13:18:55] <krigstask> В testsys.py можно писать from main import tswebapp
[13:19:04] <maksbotan> krigstask: так не работает же
[13:19:07] <krigstask> А в репе она почему-то им не является, тебе не кажется?
[13:19:23] <krigstask> [13:05:26] <maksbotan> я сделал пакет со всеми файлами и попытался в testsys.py писать from tsweb.main import tswebapp
[13:19:29] <maksbotan> в репе валяются исходники, с которых я переписываю
[13:19:35] <maksbotan> krigstask: я по-всякому пробовал
[13:19:50] <maksbotan> в любом случае на сервер уйдет папка flask/
[13:19:54] <krigstask> Ну ты и дуб
[13:20:03] <maksbotan> ?
[13:20:05] <krigstask> Мусора всякого накидал в репу
[13:23:12] <maksbotan> хм
[13:23:18] <maksbotan> и правда фигню я придумал
[13:24:53] <maksbotan> krigstask: вот смотри, я скинул все содержимое tsweb/ во flask/ и нахожусь сейчас там
[13:24:58] <maksbotan> запускаю python main.py
[13:25:00] <maksbotan> оно работает
[13:25:07] <krigstask> Да я склонировал, пробую
[13:25:10] <maksbotan> но если сделать from main import tswebapp, то фиг
[13:25:29] <maksbotan> валится в тестсис.пу
[13:27:35] <maksbotan> ну что нафиг за мистика
[13:27:42] <maksbotan> я ж так его на сервак не поставлю
[13:28:36] <krigstask> Не мистика, у тебя импорты циклические просто
[13:29:03] <maksbotan> почему оно работает когда я main.py запускаю?
[13:29:18] <maksbotan> и как мне по-твоему обойтись без циклических импортов?
[13:31:13] <krigstask> У меня были такие проблемы, как-то я их решил
[13:31:17] <krigstask> Осталось вспомнить, как
[13:31:25] <maksbotan> уж вспомни, пожалуйста
[13:34:14] <maksbotan> krigstask: я туда пушнул последние изменения, где tswebapp в testsys.py используется
[13:34:31] <krigstask> ВРЯНС «пушнул»
[13:34:49] <maksbotan> скажи как ты любишь называть это по-русски
[13:35:38] <krigstask> «Влить», «протолкнуть», по настроению
[13:35:50] <maksbotan> ужас-то какой
[13:36:00] <maksbotan> ладно, я залил туда последние коммиты
[13:36:06] <krigstask> Молодец
[13:36:07] <maksbotan> или "коммит" тоже не годится?
[13:36:19] <krigstask> Но поздно, я уже убил твой корявый репозиторий
[13:37:00] <maksbotan> скачай снова, долга что-ли =)
[13:37:14] <krigstask> Лень опять из него каталог выдирать
[13:37:48] <krigstask> http://docs.python.org/faq/programming.html#what-are-the-best-practices-for-using-import-in-a-module
[13:38:15] <maksbotan> что значит каталог выдирать?
[13:38:44] krigstask махнул рукой
[13:41:27] <krigstask> Надо мне тоже это почитать, кстати, для прояснения в голове
[13:42:54] maksbotan окончательно запутался
[13:43:13] <krigstask> www-servers/nginx/metadata.xml: Unknown herd "rion-overlay"
[13:45:08] <maksbotan> krigstask: а как тебе такая идея?
[13:45:22] <maksbotan> создать tswebapp в __init__.py, а использовать уже в модулях?
[13:46:14] <krigstask> Не очень-то
[13:46:22] <maksbotan> почему?
[13:46:41] <krigstask> По кочану. Коряво же
[13:46:50] <maksbotan> кстати ты говорил что как-то справился с этим раньше
[13:46:55] <maksbotan> не впомнил как?
[13:47:42] <krigstask> По-моему, я просто переписал `from mod import foo` на `import mod`
[13:50:12] <maksbotan> блин
[13:50:25] <maksbotan> ну я сделал в testsys.py import main                                                                    
tswebapp = main.tswebapp      
[13:50:30] <maksbotan> AttributeError: 'module' object has no attribute 'tswebapp'
[13:51:03] <krigstask> Я помню
[13:51:36] <maksbotan> и как ты мне это объяснишь?
[13:52:59] <maksbotan> как бы мне обойтись без циклических импортов ...
[13:53:30] <krigstask> Не знаю пока
[13:53:55] <maksbotan> попробуй пожалуйста придумать что-нибудь
[13:54:27] <krigstask> Циклические импорты — нормально, только их надо уметь обруливать
[13:54:57] <maksbotan> а где про это почитать можно?
[13:55:19] <krigstask> По ссылке, которую я тебе дал пятнадцать минут назад?
[13:55:31] <maksbotan> я уже прочитал
[13:55:35] <maksbotan> попробовал, ничего не помогло
[13:55:48] <maksbotan> собсно там про циклические только одно предложение
[13:57:53] <krigstask> Попробуй import main
[13:58:17] <krigstask> А main.tswebapp используй только там, где надо — в методах и функциях
[13:58:48] <maksbotan> надо же, победил
[13:58:52] <maksbotan> krigstask: я именно так и сделал
[13:59:00] <maksbotan> сам догадался )
[13:59:08] <krigstask> Именно так, как и сказано по ссылке?
[13:59:24] <maksbotan> там вроде про второй пункт ничего нет
[14:00:03] <krigstask> Останусь при своём мнении
[14:00:07] <maksbotan> правда какой-то раздутый код вышел
[14:02:42] <maksbotan> krigstask: https://github.com/AVBelyy/TSWeb/commit/92e7c5211af5628ca79566eb61be8a3d9ee04f38
[14:06:58] <maksbotan> представляю как я тебя достал...
[14:07:35] <krigstask> Так и что по ссылке-то?
[14:07:51] <maksbotan> Circular imports are fine where both modules use the “import <module>” form of import. They fail when the 2nd module wants to grab a name out of the first (“from module import name”) and the import is at the top level. That’s because names in the 1st are not yet available, because the first module is busy importing the 2nd.
[14:08:10] <maksbotan> отсюда конечно следует что нельзя брать имя сразу после импорта, но я как-то не допер с ходу
[14:08:41] <krigstask> Дальше-то читай
[14:09:13] <maksbotan> In this case, if the second module is only used in one function, then the import can easily be moved into that function. By the time the import is called, the first module will have finished initializing, and the second module can do its import.
[14:09:29] <maksbotan> у меня tswebapp в куче функций используется, не пойдет
[14:09:42] <maksbotan> krigstask: ну вот  то что я сделал это годится?
[14:32:06] <maksbotan> надо же, даже uwsgi сожрал мой сайт
[14:40:33] <krigstask> Ну да, годится вполне
[14:40:51] <maksbotan> ок
[15:33:23] maksbotan вышел(а) из комнаты
[16:55:09] <krigstask> Хо-хо-хо
>>> "aaa (bbb) ccc".split("(")[1].split(")")[0]
'bbb'
[19:01:34] krigstask вышел(а) из комнаты: Logged out
[20:02:00] maksbotan вошёл(а) в комнату
[20:04:26] <maksbotan> ну что за гадость
[20:04:54] <maksbotan> re.match(r".+(\(.+\)).+", "aaa (bbb) ccc")
[20:05:30] <maksbotan> >>> re.match(r".+\((.+)\).+", "aaa (bbb) ccc").groups()
('bbb',)
[20:05:31] <maksbotan> вот
[20:27:56] krigstask вошёл(а) в комнату
[20:29:25] <krigstask> Это и ежу ясно
[20:29:39] <krigstask> Надо бы проверить, что быстрее
[20:41:31] <maksbotan> проверил?
[20:41:43] <krigstask> Нет, конечно
[20:41:48] <krigstask> Только с работы приехал
[20:46:56] <maksbotan> а к какой задаче ты это применяешь?
[20:55:19] <krigstask> XML разбираю
[20:55:47] <maksbotan> т.е. ты считаешь себя круче автором lxml ?
[20:55:53] <maksbotan> или я как обычно туплю
[20:56:12] <krigstask> Тупишь, да
[20:57:12] <maksbotan> жаль
[20:57:17] <maksbotan> думал, излечился
[20:58:04] <krigstask> Куда там
[20:58:17] <krigstask> Расскажи мне, как lxml со скобками работает
[20:58:44] <maksbotan> :(
[20:58:50] <maksbotan> надо пойти ещё таблеточек принять
[23:09:58] <maksbotan> krigstask: знаешь что я тут подумал
[23:10:35] <maksbotan> если перенести импорт testsys в main после создания tswebapp, то по-идее from main import tswebapp должно работать
[23:11:04] <maksbotan> или костыль?
[23:12:27] <krigstask> Можно попробовать
[23:12:44] <maksbotan> самое фиговое, что я уже сделал по-старому :(
[23:12:48] <maksbotan> по-новому*
[23:16:09] <maksbotan> krigstask: работает
[23:16:14] <maksbotan> посоветуй, как оставить?
[23:16:21] <krigstask> А мне пофиг
[23:16:30] <maksbotan> ну ты злой
[23:16:36] <krigstask> Ага
[23:16:36] <maksbotan> что тебе, сложно чтоли
[23:19:21] <maksbotan> :(
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!