# -*- coding: utf-8 -*- from __future__ import unicode_literals import logging import win32com import paths win32com.__build_path__=paths.com_path() import sys import os sys.path.append(os.path.join(win32com.__gen_path__, ".")) from win32com.client import gencache from pywintypes import com_error from libloader import com log = logging.getLogger("fixes.fix_libloader") fixed=False def patched_getmodule(modname): mod=__import__(modname) return sys.modules[modname] def load_com(*names): global fixed if fixed==False: gencache._GetModule=patched_getmodule com.prepare_gencache() fixed=True result = None for name in names: try: result = gencache.EnsureDispatch(name) break except com_error: continue if result is None: raise com_error("Unable to load any of the provided com objects.") return result def fix(): log.debug("Applying fix for Libloader...") com.load_com = load_com log.debug("Load_com has been mapped correctly.")