From: DUC ANH HOANG Date: Tue, 29 Oct 2024 13:58:06 +0000 (+0100) Subject: [EDF31137] : Modularize smesh python plugin X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=49eb5ff195bf29522a167020fa45421d4d845c22;p=modules%2Fsmesh.git [EDF31137] : Modularize smesh python plugin --- diff --git a/src/Tools/smesh_plugins.py b/src/Tools/smesh_plugins.py index fdf3c5b1f..5b9194d59 100644 --- a/src/Tools/smesh_plugins.py +++ b/src/Tools/smesh_plugins.py @@ -117,3 +117,28 @@ try: except Exception as e: salome_pluginsmanager.logger.info('ERROR: TopIIVolMesh plug-in is unavailable: {}'.format(e)) pass + +import sys +import importlib +import importlib.util + +plugin_dirs = os.getenv("SMESH_PYPLUGIN_DIR").split(":") +# reverse plugin_dirs list to call smesh python plugin in good order +plugin_dirs.reverse() +for plg_dir in plugin_dirs: + if os.path.exists(plg_dir): + sys.path.insert(0, plg_dir) + #for filename in sorted( + # filter(lambda x: os.path.isfile(os.path.join(plg_dir, x)), + # os.listdir(plg_dir))): + for filename in os.listdir(plg_dir): + if filename.endswith(".py"): + f = os.path.join(plg_dir, filename) + try: + module_name = os.path.splitext(os.path.basename(f))[0] + _specs = importlib.util.find_spec(module_name) + _module = importlib.util.module_from_spec(_specs) + _specs.loader.exec_module(_module) + _module.init() + except: + print("Can not load python plugin from {}".format(plg_dir))