Уведомления

Группа в Telegram: @pythonsu

#1 Март 30, 2011 09:17:29

Игнат
От:
Зарегистрирован: 2010-10-02
Сообщения: 224
Репутация: +  0  -
Профиль   Отправить e-mail  

как подключить сразу всю папку с модулями?

делаю небольшой фреймворк
есть папка engine, в ней __init__.py и десяток файлов, каждый из которых содержит в себе класс

хотелось бы подключить это так:
from engine import *

но не получается.
перебрал в цикле:

files = os.listdir('engine')
files = [file.replace('.py', '') for file in files if file.endswith('.py') and not file.startswith('_')]
print(files)

for file in files:
print('import ' + file)
__import__('engine.' + file)
но классы из этих файлов недоступны в дальнейшем коде
и теперь везде, где мне нужен модуль, приходится писать:
from engine.module import myModule
есть какой-то более правильный/короткий способ?

PS
import class в цикле не работает
а from class import * непонятно как сделать с помощью __import__()



Отредактировано (Март 30, 2011 09:30:26)

Офлайн

#2 Март 30, 2011 11:19:12

truporez
От:
Зарегистрирован: 2009-05-08
Сообщения: 266
Репутация: +  6  -
Профиль   Адрес электронной почты  

как подключить сразу всю папку с модулями?

делайте import engine а в engine/__init__.py импортируйте все необходимые модули.



Офлайн

#3 Март 30, 2011 16:09:09

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

как подключить сразу всю папку с модулями?

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

а ещё можно использовать модули обратным вызовом, при импорте модуль регистрирует себя куда надо, а потом когда надо - отрабатывает.

Офлайн

#4 Март 30, 2011 16:24:30

truporez
От:
Зарегистрирован: 2009-05-08
Сообщения: 266
Репутация: +  6  -
Профиль   Адрес электронной почты  

как подключить сразу всю папку с модулями?

т.е. приходим к плагинам а-ля http://yapsy.sourceforge.net/



Офлайн

#5 Март 31, 2011 11:24:11

Игнат
От:
Зарегистрирован: 2010-10-02
Сообщения: 224
Репутация: +  0  -
Профиль   Отправить e-mail  

как подключить сразу всю папку с модулями?

делайте import engine а в engine/__init__.py импортируйте все необходимые модули.
просто import engine не работает, а вот “from engine import *” - помогло, спасибо



Офлайн

#6 Март 31, 2011 11:33:16

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

как подключить сразу всю папку с модулями?

Можно добавить, что from module import * затягивает все имена, перечисленные в __all__ этого модуля (если определен, конечно).
Прописывание __all__ добавляет немного порядка в код.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version