Как импортировать динамически
Товарищи знатоки Python :)
У меня есть: каталог(относительный) - library/MDrop/MDrop.py
Так же основной файл проекта: project/main.py
#main.py
for x in os.listdir('library/'):
pluginsNum = pluginsNum + len(fnmatch.filter(os.listdir(f'library/{x}'), '*.ini')) #считаю кол-во библиотек
#как в этом месте мне импортировать файл MDrop.py если условно я не знаю как он называется
#Как я могу использовать переменную X при импорте
P.S.: Вот полное дерево проекта project/library (main.py)/MDrop/MDrop.py
Ответы (1 шт):
Автор решения: eri
→ Ссылка
Вот пример кода. Файл загружается в spec (спецификацию) с именем handlermod, затем импортируется в переменную ( аналогично import... as mod). и можно обращаться к классу или функции, которые реализуют Ваш плагин.
spec = importlib.util.spec_from_file_location("handlermod", filename)
if not spec:
continue
mod = importlib.util.module_from_spec(spec)
spec.loader.exec_module(mod)
Handler = mod.Handler