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

Paul paul.kemp at standardbank.com
Fri Oct 17 08:55:08 EDT 2003


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.

Source code is:


import sys
import pythoncom

if hasattr(sys, 'importers'):
    # we are running as py2exe-packed executable
    pythoncom.frozen = 1

class HelloWorld:
    _reg_clsctx_ = pythoncom.CLSCTX_LOCAL_SERVER
    if hasattr(sys, 'importers'):
        # In the py2exe-packed version, specify the module.class
        # to use. In the python script version, python is able
        # to figure it out itself.
        _reg_class_spec_ = "__main__.HelloWorld"
    _reg_clsid_ = "{B83DD222-7750-413D-A9AD-01B37021B24B}"
    _reg_desc_ = "Python Test COM Server"
    _reg_progid_ = "Python.TestServer"
    _public_methods_ = ['Hello']
    _public_attrs_ = ['softspace', 'noCalls']
    _readonly_attrs_ = ['noCalls']
    def __init__(self):
        self.softspace = 1
        self.noCalls = 0
    # __init__()

    def Hello(self, who):
        self.noCalls = self.noCalls + 1
        # insert "softspace" number of spaces
        return "Hello" + " " * self.softspace + str(who)

if __name__ == '__main__':
    if hasattr(sys, 'importers'):
        # running as packed executable.
        if '--register' in sys.argv[1:]            or '--unregister'
in sys.argv[1:]:
            # --register and --unregister work as usual
            import win32com.server.register
            win32com.server.register.UseCommandLine(HelloWorld)
        else:
            # start the server.
            from win32com.server import localserver
            localserver.main()
    else:
        import win32com.server.register
        win32com.server.register.UseCommandLine(HelloWorld)




More information about the Python-list mailing list