diff --git a/python/helpers/pydev/pydevd_file_utils.py b/python/helpers/pydev/pydevd_file_utils.py index 3762e251bd8c..0be5c9fc2220 100644 --- a/python/helpers/pydev/pydevd_file_utils.py +++ b/python/helpers/pydev/pydevd_file_utils.py @@ -611,19 +611,25 @@ def get_abs_path_real_path_and_base_from_frame(frame): def get_fullname(mod_name): - if IS_PY3K: - import pkgutil - else: - from _pydev_imps import _pydev_pkgutil_old as pkgutil try: + import importlib.util + + spec = importlib.util.find_spec(mod_name) + if spec is not None and spec.origin is not None: + return spec.origin + except ImportError: + pass + + if not IS_PY3K: + from _pydev_imps import _pydev_pkgutil_old as pkgutil + loader = pkgutil.get_loader(mod_name) - except: - return None - if loader is not None: - for attr in ("get_filename", "_get_filename"): - meth = getattr(loader, attr, None) - if meth is not None: - return meth(mod_name) + if loader is not None: + for attr in ("get_filename", "_get_filename"): + meth = getattr(loader, attr, None) + if meth is not None: + return meth(mod_name) + return None diff --git a/python/helpers/pydev/tests/test_pydevd_file_utils.py b/python/helpers/pydev/tests/test_pydevd_file_utils.py new file mode 100644 index 000000000000..14d23196baa4 --- /dev/null +++ b/python/helpers/pydev/tests/test_pydevd_file_utils.py @@ -0,0 +1,9 @@ +from pydevd_file_utils import get_fullname + + +def test_get_fullname_exists(): + assert get_fullname('pydevd_file_utils').endswith('pydevd_file_utils.py') + + +def test_get_fullname_unknown(): + assert get_fullname("hello_world") is None