Найти - Пользователи
Полная версия: __init__.py и import
Начало » Python для новичков » __init__.py и import
1
Skyler
В общем есть такая иерархия:
folder\
__init__.py
main.py
sub\
__init__.py
mod.py

Хочу импортировать mod в main, когда его запускаю. Пишу:
import folder.sub.mod
Вроде все логично и как в документации.
Но так пахать вообще не хочет, идет только:
import sub.mod
Так же если импортировать main в mod, то
import folder.main
- не пашет

Что я делаю не так?
Андрей Светлов
Сделайте проект, напишите правильный setup.py
Вынесите скрипт-запускач за дерево модулей.
Зарегистрируйте получившуюся либу.
А потом уже импортируйте
Skyler
А где можно про это почитать? А то я не все понимаю, а на офф сайте вроде как про это ничего нет.
Вообще хочется узнать, как правильно создавать приложения, с правильной иерархией и т.д.
Skyler
И еще: если я только разрабатываю приложение и хочу красивую и удобную структуру, т.е. мне не нужно устанавливать его, как тогда быть?
bw
Какие ошибки пишет, что не пашет?
А вообще правильно Андрей говорит, учитесь пользоваться 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
Skyler
Вроде разобрался, всем спасибо.
Крашилось из-за “взаимного импорта” двух модулей или что-то типа того, но в общем сейчас этой проблемы нет.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB