Найти - Пользователи
Полная версия: как подключить сразу всю папку с модулями?
Начало » Python для новичков » как подключить сразу всю папку с модулями?
1
Игнат
делаю небольшой фреймворк
есть папка 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__()
truporez
делайте import engine а в engine/__init__.py импортируйте все необходимые модули.
o7412369815963
на практике все модуля везде не нужны, лучше подключать их по мере необходимости.

а ещё можно использовать модули обратным вызовом, при импорте модуль регистрирует себя куда надо, а потом когда надо - отрабатывает.
truporez
т.е. приходим к плагинам а-ля http://yapsy.sourceforge.net/
Игнат
делайте import engine а в engine/__init__.py импортируйте все необходимые модули.
просто import engine не работает, а вот “from engine import *” - помогло, спасибо
Андрей Светлов
Можно добавить, что from module import * затягивает все имена, перечисленные в __all__ этого модуля (если определен, конечно).
Прописывание __all__ добавляет немного порядка в код.
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