
Aliaksiej
05.05.2016
11:06:35
Хотя может быть пакет логгинг
Давай финд без .py

Pavel
05.05.2016
11:07:50

Sergey
05.05.2016
11:07:51

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
а вот нет

Pavel
05.05.2016
11:16:30

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
Длинный вывод
ага, и он там насрал всеми импорами, которые пытался сделать.

Sergey
05.05.2016
11:18:04

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

Aliaksiej
05.05.2016
11:21:02
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.

Sergey
05.05.2016
11:26:10

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?

Sergey
05.05.2016
11:28:03

Cykooz
05.05.2016
11:28:03
Кашу маслом не испортиш :)
Может ты в папке с пакетом запускаешь питон-шелл?

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

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

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

Sergey
05.05.2016
11:44:26

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

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

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

Sergey
05.05.2016
11:51:35

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

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
После того как питон инициализирует пакет первый раз - он уже находится в памяти и питон знает где он реально находится.

Sergey
05.05.2016
11:56:30

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

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

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

Pavel
05.05.2016
12:05:30

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