@ru_python

Страница 665 из 9768
Aliaksiej
05.05.2016
11:06:35
Хотя может быть пакет логгинг

Давай финд без .py

Pavel
05.05.2016
11:07:50
Давай финд без .py
у него другие импорты тоже не айс.

Sergey
05.05.2016
11:07:51
Давай финд без .py
./local/lib/python3.5/logging

Google
Aliaksiej
05.05.2016
11:08:39
у него другие импорты тоже не айс.
Они внутри пакета проблемные

Sergey
05.05.2016
11:08:46
Проверил на локальном python3.5 -c 'import mypkg.logger' - все отлично. На сервер - ошибка импорта logger.

Aliaksiej
05.05.2016
11:09:30
Вставляй принт после каждого импорта, смотри где упало, иди в тот модуль и там тоже самое

И так далее

Pavel
05.05.2016
11:10:42
чё-то я запутался, что происходит. pavel@debian:xxxxxx$ find . . ./main.py ./pkg ./pkg/__init__.py ./pkg/logger.py структура файлов и путей примерно такая?

Sergey
05.05.2016
11:12:54
Убрал импорт logging из __init__.py. Сделал так: ~/local/bin/python3 -c 'import uptocall2jc.logger', получил: Traceback (most recent call last): File "<string>", line 1, in <module> ImportError: No module named 'uptocall2jc.logger'

На логкальном все нормально даже без удаления импорта logger

Pavel
05.05.2016
11:15:23
верни логгер и добавь ключ`python -v`

Dmitry
05.05.2016
11:15:38
господа, как просто получить дату в пухтоне витда чч:мм дд-мм-гггг

?

третий питон, черт бы его

Google
Aliaksiej
05.05.2016
11:16:15
От второго не отличается в этом

IНЖАЛИД DPИЖЕ
05.05.2016
11:16:20
from datetime import datetime

Dmitry
05.05.2016
11:16:22
а вот нет

IНЖАЛИД DPИЖЕ
05.05.2016
11:16:30
а вот нет
всмысле?

Dmitry
05.05.2016
11:16:47
не работает конструкция из второго с strftime

Sergey
05.05.2016
11:17:02
IНЖАЛИД DPИЖЕ
05.05.2016
11:17:15
потому что как-то это очень странно

Pavel
05.05.2016
11:17:29
Длинный вывод
ага, и он там насрал всеми импорами, которые пытался сделать.

Dmitry
05.05.2016
11:20:07
datetime.date.strftime('%H:%M:%S - %d/%m/%Y')

так?

Aliaksiej
05.05.2016
11:21:02
не работает конструкция из второго с strftime
»> import datetime »> datetime.datetime.now().strftime('%H:%M %Y-%m-%d')

reference: https://docs.python.org/3.5/library/datetime.html#strftime-strptime-behavior

Dmitry
05.05.2016
11:24:08
спасибо

Cykooz
05.05.2016
11:24:12
Хм, написал что не может найти logger, т.е. сам пакет есть.
Так, как то ты странно проверяешь. Я имелл ввиду просто запустить голый питон, что бы он не видел ТВОЙ пакет и попробовать его имортнуть. Этим ты проверишь не видит ли питон случайно ещё какой то пакет с такми же именем. Ну и вполне логично, что если он видит твой пакет - то при его импорте он сначала загрузит __init__.py, в котором у тебя не прописывается путь в sys.path.

Cykooz
05.05.2016
11:26:44
Ну да

Sergey
05.05.2016
11:27:30
Импортирует он мой пакет и пишет что не находит в моем пакете logger, который импортируется в __iniy__.py моего пакета

Google
Cykooz
05.05.2016
11:27:34
Можешь ещё попробовать в __init__.py тоже сделать добавление пути в sys.path :)

Pavel
05.05.2016
11:28:00
а зачем вы теребите sys.path?

Cykooz
05.05.2016
11:28:03
Кашу маслом не испортиш :)

а зачем вы теребите sys.path?
Ну вот такая задача :)

Может ты в папке с пакетом запускаешь питон-шелл?

Sergey
05.05.2016
11:29:27
а зачем вы теребите sys.path?
Что бы иметь возможность нормально запускать пакет. Т.е. мне надо python3 mypkg + мне нужно в других модулях импортировать переменные из __init__.py моего пакета.

Может ты в папке с пакетом запускаешь питон-шелл?
Да, сейчас запущу просто в домашней.

Все верно, такого модуля нет

Cykooz
05.05.2016
11:30:52
Ну хоть этот кейс исключили

Aragaer
05.05.2016
11:31:31
вот я вот не знаю, но у меня тоже были вечно проблемы с импортом локальным, пока не включил virtualenv

Sergey
05.05.2016
11:32:28
а зачем вы теребите sys.path?
Изучил импорты. Последовательность такая: from pkg import common # я так понял это инициализирует __init__.py пакета в котором уже from . import logger # ошибка: ImportError: cannot import name 'logger'

Сергей
05.05.2016
11:37:10
фром же не инициализирует инит пай

если не звездочка

Sergey
05.05.2016
11:38:09
фром же не инициализирует инит пай
Да, ошибся, после инициализации __init__ кидает ошибку что нет модуля logger в этом пакете (а он там есть)

Aragaer
05.05.2016
11:40:44
а эта, я вот опять же не помню

а если попробовать import .logger

Google
Aragaer
05.05.2016
11:40:58
с точкой впереди

там между 2 и 3 что-то менялось на тему относительных импортов

Sergey
05.05.2016
11:42:58
а если попробовать import .logger
Так нельзя, можно так from .logger import func, но в моем кейсе это тоже не заводится. Проблема где то глубже.

Aragaer
05.05.2016
11:43:44
вот я честно когда-то долго мучался со всеми этими точками. А потом внутри виртуалэнва все само заработало и все

Aragaer
05.05.2016
11:45:56
я подозреваю, что в виртуаленве корневой каталог добавлен в sys.path

http://stackoverflow.com/questions/7332299/trace-python-imports

Cykooz
05.05.2016
11:47:49
@pankovseryi А вы убрали из __init__.py абсолютый импорт? Там надо относительный импорт использовать, иначе возникает рекурсивный импорт файла __init__.py

Sergey
05.05.2016
11:48:32
@pankovseryi А вы убрали из __init__.py абсолютый импорт? Там надо относительный импорт использовать, иначе возникает рекурсивный импорт файла __init__.py
Убирал. Сейчас уберу еще раз и гляну. Но вся соль в том что на локальном работают все варианты, а на сервере не один.

Admin
ERROR: S client not available

Cykooz
05.05.2016
11:48:42
Ну и вообще в __init__.py лучше ничего не делать, а вынести всё это в другой файл.

Sergey
05.05.2016
11:48:51
Cykooz
05.05.2016
11:48:59
У меня на локальном компе не работает абсолютный импорт в __init__.py

Sergey
05.05.2016
11:49:45
Ну и вообще в __init__.py лучше ничего не делать, а вынести всё это в другой файл.
Почему? Это же entry point для моего пакета, инициализируем логгинг, считываем конфиг, а потом все остальные модули пакета могут обращаться ко всему этому простым from . import config

Cykooz
05.05.2016
11:50:43
Пока питон не загрузит до конца __init__.py - он не сможет ничего импортировать из пакета по его имени. А у вас как раз в самом __init__.py идёт импортирование из пакета

Cykooz
05.05.2016
11:51:49
Ваш entry_point, как понял - это файл __main__.py

А __init__.py - это в простом случае просто индикатор что папка с этим файлом - это питонячий пакет

Sergey
05.05.2016
11:52:43
Dmitry
05.05.2016
11:53:23
парни, почмырите http://pastebin.com/wZqe1uj6

Google
Cykooz
05.05.2016
11:53:43
При любом импорте из пакета, питон сначала загружает __init__.py этого пакета, и пока он это не сделает - он не пропишет у себя в кишках этот пакет.

Sergey
05.05.2016
11:54:27
Перед запуском __init__.py, т.е. импортом из него функции main, я добавляю этот пакет в sys.path в __main__.py
А затем уже в том же __main__ импортирую из пакета функцию from pkg.common import main, далее инициализируется __init__, но на этот момент pkg уже есть в sys.path (проверял принтом)

Dmitry
05.05.2016
11:55:00
скрипт ищет пакеты указанные в файле (потом будет по rpm -qa), ищет в каком репо они лежат и скачивает их

Cykooz
05.05.2016
11:55:15
То что он есть в sys.path - не означает что питон знает про пакет, это просто список путей где он ищет ещё не загруженые пакеты

Sergey
05.05.2016
11:56:20
Cykooz
05.05.2016
11:56:21
После того как питон инициализирует пакет первый раз - он уже находится в памяти и питон знает где он реально находится.

Cykooz
05.05.2016
11:57:20
Все пакеты про которые знает питон, можно тут поглядеть sys.modules

Sergey
05.05.2016
11:57:44
Прямой импорт пакета в __init__ срабатывает отлично, но при попытке вытащить из него модуль logger кидает ошибку что его нет.

Cykooz
05.05.2016
12:01:02
Так, я скосячил - я в своём mypkg/__init__.py вставил импорт из pkg и словил ошибку.

Реально у меня всё работает как у вас на локале

Sergey
05.05.2016
12:02:01
Принт sys.modules в __init__ показал, что пакет присутсвует там

Pavel
05.05.2016
12:03:05
парни, почмырите http://pastebin.com/wZqe1uj6
cmd.split(' ') отстой, нельзя передать параметр с пробелом и в кавычках. В shutil вроде был годный сплит.

Whore Amazing
05.05.2016
12:04:55
понял, что я осел и можно изменить архитектуру так, что триггеры вообще не будут нужны. и сразу так легко на душе стало?

Sergey
05.05.2016
12:05:11
Итак, сейчас сделал полностью все на отсносительных импортах. Перезалил пакет, результат: SystemError: Parent module '' not loaded, cannot perform relative import

Whore Amazing
05.05.2016
12:05:36
да, тоже верно.

Sergey
05.05.2016
12:07:22
Запуск пакета вот так python3 -m pkg дает следующее: Error while finding spec for 'pkg.__main__' (<class 'ImportError'>: cannot import name 'logger'); 'pkg' is a package and cannot be directly executed

Cykooz
05.05.2016
12:08:50
При запуске с ключём -m у меня в первую очередь грузится __init__.py, и только потом __main__.py

Sergey
05.05.2016
12:11:15
Теперь __main__.py сделал абсолютный импорт функции запуска, а в остальных относительный импорт, результат: на локальном все отрабатывает, на сервере опять ошибка импорта logger

Страница 665 из 9768