diff --git a/python/PyKDDockWidgets/__init__.py.cmake b/python/PyKDDockWidgets/__init__.py.cmake index 0caf4601..ff5c74dd 100644 --- a/python/PyKDDockWidgets/__init__.py.cmake +++ b/python/PyKDDockWidgets/__init__.py.cmake @@ -15,15 +15,22 @@ import os __all__ = ['KDDockWidgets'] def setupLibraryPath(): - package_dir = os.path.abspath(os.path.dirname(__file__)) if sys.platform != 'win32': return - if sys.version_info[0] == 3 and sys.version_info[1] >= 8: - os.add_dll_directory(package_dir) - return + from shiboken2 import shiboken2 + from PySide@PYSIDE_MAJOR_VERSION@ import QtCore - os.environ['PATH'] = os.fspath(package_dir) + os.pathsep + os.environ['PATH'] + extra_dll_dirs = [ os.path.abspath(os.path.dirname(shiboken2.__file__)), + os.path.abspath(os.path.dirname(QtCore.__file__)), + os.path.abspath(os.path.dirname(__file__)) ] + + if sys.version_info[0] == 3 and sys.version_info[1] >= 8: + for dll_dir in extra_dll_dirs: + os.add_dll_directory(dll_dir) + + for dll_dir in extra_dll_dirs: + os.environ['PATH'] = os.fspath(dll_dir) + os.pathsep + os.environ['PATH'] # Preload PySide libraries to avoid missing libraries while loading KDDockWidgets try: diff --git a/python/tests/config.py.cmake b/python/tests/config.py.cmake index d9636c27..a49a5c47 100644 --- a/python/tests/config.py.cmake +++ b/python/tests/config.py.cmake @@ -8,5 +8,12 @@ # Contact KDAB at for commercial licensing options. # +import os +import sys + class TstConfig(object): bindingsNamespace = "@PYTHON_BINDING_NAMESPACE@" + + def initLibraryPath(): + if sys.platform == 'win32' and sys.version_info[0] == 3 and sys.version_info[1] >= 8: + os.add_dll_directory("@CMAKE_RUNTIME_OUTPUT_DIRECTORY@") diff --git a/python/tests/tst_importModule.py b/python/tests/tst_importModule.py index a2681180..96f31318 100644 --- a/python/tests/tst_importModule.py +++ b/python/tests/tst_importModule.py @@ -26,4 +26,5 @@ class TestImportModules(unittest.TestCase): self.assertIn(symbol, moduleSymbols) if __name__ == '__main__': + TstConfig.initLibraryPath() unittest.main()