com: makepy gencache.EnsureModule

Kai Rosenthal kairosenthal at tiscali.de
Fri Aug 10 05:24:57 EDT 2007


Hello,

I' having a problem with gencache.EnsureModule:

I used win32com\client\makepy.py to successfully generate Python
sources.
Unfortunately, after I call win32com.client.Dispatch(), the object I
get back is of type "COMObject" instead of one of the generated
classes.

In particular, I'm trying to interact with SolidWorks Extensibility
Type Library and the PROGID is "SldWorks.Application".

Using win32com\client\makepy.py -i
SolidWorks Extensibility Type Library
 {801A0000-A66C-11D3-A8BD-0000861EBBD6}, lcid=0, major=1, minor=0
 >>> # Use these commands in Python code to auto generate .py support
 >>> from win32com.client import gencache
 >>> gencache.EnsureModule('{801A0000-A66C-11D3-A8BD-0000861EBBD6}',
0, 1, 0)

Looking in win32com\gen-py, the appropriate file _does_ exist:
801A0000-A66C-11D3-A8BD-0000861EBBD6x0x1x0.py
and it does contain the correct class definitions.

Then, in my code:
>>> mod = win32com.client.gencache.EnsureModule('{801A2001-A66C-11D3-A8BD-0000861EBBD6}', 0, 1, 0)
>>> mod
None
>>> ob = win32com.client.Dispatch("SldWorks.Application")
>>> ob
<COMObject SldWorks.Application>

Why are the object mod is None and the object ob is <COMObject
SldWorks.Application>  instead  <win32com.gen_py.<blah>>?
Any bright ideas as to what's going wrong here?

Thanks for your hints, Kai




More information about the Python-list mailing list