Source code for pyquickhelper.helpgen.utils_pywin32

"""
Functions to help using pywin32


:githublink:`%|py|5`
"""


[docs]def import_pywin32(): # pragma: no cover """ For the module ``pywin32``, this function tries to add the path to the DLL to ``PATH`` before throwing the exception: ``DLL load failed: The specified module could not be found``. :githublink:`%|py|13` """ try: import win32com return win32com except ImportError as e: if "DLL load failed:" in str(e): import os import sys import numpy from distutils.sysconfig import get_python_lib paths = set([os.path.join( os.path.split(sys.executable)[0], "Lib", "site-packages", "pywin32_system32"), os.path.join(get_python_lib(), "pywin32_system32"), os.path.join( os.path.dirname(numpy.__file__), "..", "pywin32_system32"), ]) epath = os.environ["PATH"] last_path = None for path in paths: last_path = path # exe = os.path.abspath(os.path.dirname(sys.executable)) os.environ["PATH"] = epath + ";" + path try: import win32com return win32com except ImportError: # we try the next path continue try: import win32com return win32com except ImportError: # addition for WinPython exe = os.path.abspath(os.path.dirname(sys.executable)) os.environ["PATH"] = os.environ["PATH"] + ";" + exe try: import win32com return win32com except ImportError: dll = os.listdir(last_path) dll = [os.path.join(last_path, _) for _ in dll if "dll" in _] if len(dll) == 0: raise ImportError("Did you install pywin32?") from e raise ImportError( "Some DLL must be copied:\n" + "\n".join(dll)) from e else: raise e