From 6e34d359aa6d170bb2adce770c74cae75ee49a99 Mon Sep 17 00:00:00 2001 From: crivella Date: Fri, 16 May 2025 17:58:14 +0200 Subject: [PATCH 1/2] Improved import functionality to not rely on `sys.path` being set --- easybuild/tools/utilities.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/easybuild/tools/utilities.py b/easybuild/tools/utilities.py index ae570f3dc0..16f8914cb1 100644 --- a/easybuild/tools/utilities.py +++ b/easybuild/tools/utilities.py @@ -34,6 +34,8 @@ import os import re import sys +import importlib + from string import ascii_letters, digits from easybuild.base import fancylogger @@ -132,9 +134,15 @@ def import_available_modules(namespace): :param namespace: The namespace to import modules from. """ modules = [] - for path in sys.path: - cand_modpath_glob = os.path.sep.join([path] + namespace.split('.') + ['*.py']) + try: + mod = importlib.import_module(namespace) + except ImportError as err: + raise EasyBuildError("import_available_modules: Failed to import %s: %s", namespace, err) + + for path in mod.__path__: + + cand_modpath_glob = os.path.sep.join([path] + ['*.py']) # if sys.path entry being considered is the empty string # (which corresponds to Python packages/modules in current working directory being considered), From f7eb033b3d782bfcb11cdcc7eac63adeabd4ea53 Mon Sep 17 00:00:00 2001 From: crivella Date: Fri, 16 May 2025 18:00:56 +0200 Subject: [PATCH 2/2] lint --- easybuild/tools/utilities.py | 1 - 1 file changed, 1 deletion(-) diff --git a/easybuild/tools/utilities.py b/easybuild/tools/utilities.py index 16f8914cb1..37f05763dd 100644 --- a/easybuild/tools/utilities.py +++ b/easybuild/tools/utilities.py @@ -33,7 +33,6 @@ import glob import os import re -import sys import importlib from string import ascii_letters, digits