38 lines
1.0 KiB
Python
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()
|