Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 22, 2010 00:13:41

Skyler
От:
Зарегистрирован: 2009-07-23
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

__init__.py и import

В общем есть такая иерархия:
folder\
__init__.py
main.py
sub\
__init__.py
mod.py

Хочу импортировать mod в main, когда его запускаю. Пишу:

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

Что я делаю не так?



Офлайн

#2 Апрель 22, 2010 01:06:04

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

__init__.py и import

Сделайте проект, напишите правильный setup.py
Вынесите скрипт-запускач за дерево модулей.
Зарегистрируйте получившуюся либу.
А потом уже импортируйте



Офлайн

#3 Апрель 22, 2010 07:18:43

Skyler
От:
Зарегистрирован: 2009-07-23
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

__init__.py и import

А где можно про это почитать? А то я не все понимаю, а на офф сайте вроде как про это ничего нет.
Вообще хочется узнать, как правильно создавать приложения, с правильной иерархией и т.д.



Офлайн

#4 Апрель 23, 2010 11:10:04

Skyler
От:
Зарегистрирован: 2009-07-23
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

__init__.py и import

И еще: если я только разрабатываю приложение и хочу красивую и удобную структуру, т.е. мне не нужно устанавливать его, как тогда быть?



Офлайн

#5 Апрель 23, 2010 12:56:22

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

__init__.py и import

Какие ошибки пишет, что не пашет?
А вообще правильно Андрей говорит, учитесь пользоваться setup.py. Где посмотреть, берете любой проект и смотрите как умные дядьки делают :-).
Так же могут быть проблемы с циклическим импортом. Не помню как ошибка называется.
И что с __init__.py, какое он имеет отношение к теме?

..bw



Офлайн

#6 Апрель 23, 2010 16:15:07

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

__init__.py и import

Да то, что в sys.path лежит путь от sub, а не от folder - если main.py запускать.
http://diveintopython3.org/packaging.html
http://docs.python.org/tutorial/modules.html
И т.д.



Офлайн

#7 Апрель 23, 2010 16:16:09

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

__init__.py и import

Если разрабатываете - делаете таки package и ставите его как python setup.py develop



Офлайн

#8 Апрель 25, 2010 01:52:43

Skyler
От:
Зарегистрирован: 2009-07-23
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

__init__.py и import

Вроде разобрался, всем спасибо.
Крашилось из-за “взаимного импорта” двух модулей или что-то типа того, но в общем сейчас этой проблемы нет.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version