pddnsc/pddnsc/loaders.py

38 lines
1.0 KiB
Python

""" функции загрузки файлов плагинов """
import os
import traceback
from importlib import util
def load_module(path: str):
"""загрузка python модуля
Args:
path (str): имя файла
"""
name = os.path.split(path)[-1]
spec = util.spec_from_file_location(name, path)
module = util.module_from_spec(spec)
spec.loader.exec_module(module)
return module
def load_plugins(init_filepath: str):
"""Загрузка плагинов из пакета
Args:
init_filepath (str): имя `__init__.py` файла пакета
"""
dirpath = os.path.dirname(os.path.abspath(init_filepath))
for fname in os.listdir(dirpath):
if (
not fname.startswith(".")
and not fname.startswith("__")
and fname.endswith(".py")
):
try:
load_module(os.path.join(dirpath, fname))
except Exception:
traceback.print_exc()