Уведомления

Группа в Telegram: @pythonsu

#1 Март 8, 2011 11:40:23

victor_kr
От:
Зарегистрирован: 2011-03-08
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Как использовать модуль из другого пакета?

Хочу создать структуру программы такого вида:

myproject/
models/
mymodel.py
search/
search_tool.py

И при этом хочу использовать mymodel.py в search_tool.py. Подскажите пожалуйста как это сделать? Стоит ли это вообще делать? Какие стандартные подходы? Спасибо.



Офлайн

#2 Март 8, 2011 11:55:30

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Как использовать модуль из другого пакета?

Задавал похожий вопрос на этом форуме. Долгое обсуждение для себя просуммировал так:
В структуре проекта - связи допускаются в одном направлении сверху вниз. (в текущей папке допустимы горизонтальные связи). Если есть общие части - то их выделяют, делают из них библиотеки и инсталлируют в питон вцелом. Если глобальное инсталирование нежелательно - используют pip для создания виртуальной среды исполнения.

Если это не нравится, то можно устанавливать python path перед импротом - это не очень сложно. (http://docs.python.org/tutorial/modules.html раздел 6.1.2)
Или пользоваться относительным импортом. (6.4.2. Intra-package References) - Это посложнее.

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



Отредактировано (Март 8, 2011 12:02:47)

Офлайн

#3 Март 8, 2011 12:31:33

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Как использовать модуль из другого пакета?

я всегда устанавливаю пакет при разработке

python setup.py develop
и пользую пути относительно пакета



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version