From 5916692cf4c4df4f808e346c9bda1604960a0ff3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sl=C3=A1vek=20Banko?= Date: Thu, 28 Jul 2022 15:26:54 +0200 Subject: [PATCH] Changed testing for the presence of optional modules, because simply testing a file with a ".so" extension does not work on multiarch Python installations. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Slávek Banko (cherry picked from commit b34531364d5c0d3be7056d87011afd8bd538a0e7) --- module-init.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/module-init.py b/module-init.py index bc5f31b..00bb4e8 100644 --- a/module-init.py +++ b/module-init.py @@ -12,6 +12,23 @@ for m_path in sys.path: for m_path in tqt_modules: sys.path.insert(0, m_path) +# Checking if the module is available +def is_module_available(module_name): + if sys.version_info < (3, 0): + # python 2 + import pkgutil + mod_loader = pkgutil.find_loader(module_name) + if sys.version_info <= (3, 3): + # python 3.0 to 3.3 + import pkgutil + mod_loader = pkgutil.find_loader(module_name) + elif sys.version_info >= (3, 4): + # python 3.4 and above + import importlib.util + mod_loader = importlib.util.find_spec(module_name) + + return mod_loader is not None + # Base modules __all__ = [ 'qt', @@ -24,11 +41,11 @@ __all__ = [ ] # Optional modules -if os.path.exists(os.path.join(m_pyqt_dir, 'qtaxcontainer.so')): +if is_module_available('qtaxcontainer'): __all__.append('qtaxcontainer') -if os.path.exists(os.path.join(m_pyqt_dir, 'qtext.so')): +if is_module_available('qtext'): __all__.append('qtext') -if os.path.exists(os.path.join(m_pyqt_dir, 'qtgl.so')): +if is_module_available('qtgl'): __all__.append('qtgl') # Import namespaces