Форум сайта python.su
В общем есть такая иерархия:
folder\
__init__.py
main.py
sub\
__init__.py
mod.py
Хочу импортировать mod в main, когда его запускаю. Пишу:
import folder.sub.mod
import sub.mod
import folder.main
Офлайн
Сделайте проект, напишите правильный setup.py
Вынесите скрипт-запускач за дерево модулей.
Зарегистрируйте получившуюся либу.
А потом уже импортируйте
Офлайн
А где можно про это почитать? А то я не все понимаю, а на офф сайте вроде как про это ничего нет.
Вообще хочется узнать, как правильно создавать приложения, с правильной иерархией и т.д.
Офлайн
И еще: если я только разрабатываю приложение и хочу красивую и удобную структуру, т.е. мне не нужно устанавливать его, как тогда быть?
Офлайн
Какие ошибки пишет, что не пашет?
А вообще правильно Андрей говорит, учитесь пользоваться setup.py. Где посмотреть, берете любой проект и смотрите как умные дядьки делают :-).
Так же могут быть проблемы с циклическим импортом. Не помню как ошибка называется.
И что с __init__.py, какое он имеет отношение к теме?
..bw
Офлайн
Да то, что в sys.path лежит путь от sub, а не от folder - если main.py запускать.
http://diveintopython3.org/packaging.html
http://docs.python.org/tutorial/modules.html
И т.д.
Офлайн
Если разрабатываете - делаете таки package и ставите его как python setup.py develop
Офлайн
Вроде разобрался, всем спасибо.
Крашилось из-за “взаимного импорта” двух модулей или что-то типа того, но в общем сейчас этой проблемы нет.
Офлайн