[py] имена модулей

doublemother

Ситуация следующая: есть модуль aaa.bbb, есть модуль ccc.ddd.aaa.
Я хочу в модуле ccc.ddd.aaa сделать "from aaa.bbb import fuckingshit". В этом месте модуль резолвит aaa, как самого себя, и соответственно bbb я уже не вижу, импорт обламывается. Отсюда вопрос: как в этом милом языке решать такие вещи?

pilot

Отсюда вопрос: как в этом милом языке решать такие вещи?
Доки читать? :o
relative imports тебя не спасают чтоль?

Phoenix

а так:

Ситуация следующая: есть модуль datetime.datetime, есть модуль myproject.myapp.datetime.
Я хочу в модуле myproject.myapp.datetime сделать "from datetime.datetime import now"

doublemother

/В доках пока ничего найти не могу, гуглингом находятся только аналогичные проблемы с советами типа «переименуйте модуль».
Relative imports меня то ли не спасают, то ли я их не умею. если я делаю "from ...aaa.bbb import fuckingshit", я получаю "Attempted relative import beyond toplevel package". При меньшем числе точечек просто ругается на неизвестное имя модуля. Ну и как бы aaa и ccc — это два совершенно несвязанных пакета, поэтому я не уверен, что относительный импорт должен работать (если один лежит где-нибудь в /usr/local, а другой — в ~/.local/)

Phoenix

А если сделать

from __future__ import absolute_import

то вроде как должен игнорить локальные пакеты (они доступны через import .packegeinsamedir)
сам не пробовал :grin:

alfadred

fuckingshit = __import__('aaa.bbb', fromlist = ['fuckingshit']).fuckingshit
Не знаю, насколько это труЪ, но работает.

doublemother

from __future__ import absolute_import
О, это канает, спасибо.
Оставить комментарий
Имя или ник:
Комментарий: