comtypes icon indicating copy to clipboard operation
comtypes copied to clipboard

GetModule IndexError list index out of range with gen_dir=None

Open forderud opened this issue 5 years ago • 0 comments

I'm experiencing IndexError when using GetModule(filename) together with gen_dir=None.

Sample code to reproduce:

import comtypes.client
comtypes.client.gen_dir = None
#comtypes.gen.__path__ = [''] # work-around for crash
tlb = comtypes.client.GetModule(tlbfile) # raises IndexError

The error seem to be caused by comtypes.gen.__path__ being empty.

Error traceback:

  File "MyScript.py", line 80, in ParseTypeLib
    tlb = comtypes.client.GetModule(tlbfile)
  File "lib\site-packages\comtypes\client\_generate.py", line 110, in GetModule
    mod = _CreateWrapper(tlib, pathname)
  File "lib\site-packages\comtypes\client\_generate.py", line 172, in _CreateWrapper
    generate_module(tlib, ofi, pathname)
  File "lib\site-packages\comtypes\tools\tlbparser.py", line 750, in generate_module
    gen.generate_code(list(items.values()), filename=pathname)
  File "lib\site-packages\comtypes\tools\codegenerator.py", line 241, in generate_code
    self.generate_all(items)
  File "lib\site-packages\comtypes\tools\codegenerator.py", line 189, in generate_all
    self.generate(item)
  File "lib\site-packages\comtypes\tools\codegenerator.py", line 185, in generate
    mth(item)
  File "lib\site-packages\comtypes\tools\codegenerator.py", line 629, in External
    comtypes.client.GetModule(ext.tlib)
  File "lib\site-packages\comtypes\client\_generate.py", line 110, in GetModule
    mod = _CreateWrapper(tlib, pathname)
  File "lib\site-packages\comtypes\client\_generate.py", line 177, in _CreateWrapper
    mod.__file__ = os.path.join(os.path.abspath(comtypes.gen.__path__[0]),
IndexError: list index out of range

Environment

  • 64bit Python 3.6 & 64bit Python 3.7.
  • comtypes 1.1.7 (most recent released version)

forderud avatar May 22 '20 12:05 forderud