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

Thomas Heller theller at python.net
Fri Oct 17 09:46:31 EDT 2003


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