--- a/scripts/install.py Sat Jul 27 12:03:50 2024 +0200 +++ b/scripts/install.py Sat Jul 27 14:22:24 2024 +0200 @@ -12,6 +12,7 @@ import argparse import compileall import contextlib +import copy import datetime import fnmatch import getpass @@ -1740,6 +1741,12 @@ } if withPyqt6Tools: optionalModulesList["qt6-applications"] = ("qt6_applications", "") + optionalWinModulesList = { + # key is pip project name + # value is tuple of package name, pip install constraint + "pywin32": ("win32com", ">=1.0"), + "command-runner": ("command_runner", ""), + } # check mandatory PyQt6 modules modulesOK = True @@ -1786,9 +1793,12 @@ print("\nOptional Packages") print("-----------------") optionalMissing = False - for optPackage in sorted(optionalModulesList): + optModulesDict = copy.deepcopy(optionalModulesList) + if sys.platform.startswith(("win", "cygwin")): + optModulesDict.update(optionalWinModulesList) + for optPackage in sorted(optModulesDict): try: - importlib.import_module(optionalModulesList[optPackage][0]) + importlib.import_module(optModulesDict[optPackage][0]) print("Found", optPackage) except ImportError as err: if isSudo: @@ -1798,7 +1808,7 @@ msg = "Optional '{0}' could not be detected.{1}".format( optPackage, "\nError: {0}".format(err) if verbose else "" ) - pipInstall(optPackage + optionalModulesList[optPackage][1], msg) + pipInstall(optPackage + optModulesDict[optPackage][1], msg) if optionalMissing: print("Some optional packages are missing and could not be installed.") print("Install them manually with:")