pythoncom - 'module' object has no attribute 'frozen'

Paul paul.kemp at standardbank.com
Sat Oct 18 03:30:25 EDT 2003


Thanks Thomas - adding the sys.frozen = 1 line seemed to do the trick.

I'm a bit of a beginner...would you mind explaining to me what the
'frozen' bit means?

Thanks
Paul

Thomas Heller <theller at python.net> wrote in message news:<smlsm0y0.fsf at python.net>...
> paul.kemp at standardbank.com (Paul) writes:
> 
> > Hi
> >
> > I'm trying to build a standalone COM exe server using Python 2.2 +
> > Mark Hammond's windows extensions + Py2Exe.  I've built the example
> > linked on the Py2Exe homepage and get this error when running the exe:
> >
> > I:\Program Files\Python22\dist\comtest>comtest --register
> > Traceback (most recent call last):
> >   File "<string>", line 37, in ?
> >   File "win32com\server\register.pyc", line 468, in UseCommandLine
> >   File "win32com\server\register.pyc", line 405, in RegisterClasses
> >   File "win32com\server\register.pyc", line 188, in RegisterServer
> > AttributeError: 'module' object has no attribute 'frozen'
> >
> > Does anyone know what I'm doing wrong?  thanks.  btw, I have to use
> > Python 2.2.
> 
> Mark Hammond changed his code to support McMillan installer.
> Looking at line 188 in win32com\server\register.py explains what happens:
> 
> 187  if pythoncom.frozen:
> 188    assert sys.frozen, "pythoncom is frozen, but sys.frozen is not set - don't know the context!"
> 189    if sys.frozen == "dll":
> 
> You need to make sure that sys.frozen is also set, but better not to
> 'dll'.  I didn't try it, but the next step for you would be to change
> your code in the way mentioned below:
> 
> > import sys
> > import pythoncom
> >
> > if hasattr(sys, 'importers'):
> >     # we are running as py2exe-packed executable
> >     pythoncom.frozen = 1
> 
>     sys.frozen = 1
> 
> >
> > class HelloWorld:
> >     _reg_clsctx_ = pythoncom.CLSCTX_LOCAL_SERVER
> [...]
> 
> The good news is that Mark and I are currently working on a brand new
> version of py2exe which will support 2.3 only, but which is much better
> integrated with the win32all stuff.  In this version, you don't have to
> do anything special in your com server code, although you have to change
> your setup script a little bit.
> 
> Thomas




More information about the Python-list mailing list