From: Sean F <wsf...@ea...> - 2004-06-03 19:29:18
|
Never mind - figured it out. I hate it when that happens! changed: setup(com_server=["testcom.HelloWorld"] to: setup(com_server=["testcom"]) And all works well. Thanks anyway - Sean F Sean F wrote: > What do I need to do to build my script as a COM server with py2exe? > > As a learning tool, I'm using the code in the "Quick Start to Server > side COM" documentation included with win32all, saved as testcom.py > > # testcom.py > class HelloWorld: > _reg_clsid_ = "{1B6DDB9E-5817-4BD8-9085-625DBB6304C9}" > _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 > > def Hello(self, who): > self.noCalls = self.noCalls + 1 > # insert "softspace" number of spaces > return "Hello" + " " * self.softspace + who > > if __name__=='__main__': > # ni only for 1.4! > import win32com.server.register > win32com.server.register.UseCommandLine(HelloWorld) > > When I run this script, the server is registered, and I can call it from > other apps. Exactly the behavior I want. > > So, now I want to build this with py2exe, so I built the following setup > script: > > # setup.py > from distutils.core import setup > import py2exe > > setup(com_server=["testcom.HelloWorld"]) > > When I run "python setup.py py2exe", it fails: > > Traceback (most recent call last): > File "setup.py", line 4, in ? > setup(com_server=["testcom.HelloWorld"]) > File "c:\python23\lib\distutils\core.py", line 149, in setup > dist.run_commands() > File "c:\python23\lib\distutils\dist.py", line 907, in > run_commands > self.run_command(cmd) > File "c:\python23\lib\distutils\dist.py", line 927, in run_command > cmd_obj.run() > File "c:\python23\lib\site-packages\py2exe\build_exe.py", line > 187, in run > self.find_needed_modules(mf, required_files, required_modules) > File "c:\python23\lib\site-packages\py2exe\build_exe.py", line > 809, in find_needed_modules > mf.import_hook(mod) > File "c:\python23\lib\modulefinder.py", line 125, in import_hook > m = self.load_tail(q, tail) > File "c:\python23\lib\modulefinder.py", line 191, in load_tail > raise ImportError, "No module named " + mname > ImportError: No module named testcom.HelloWorld > > I can clearly see what I am doing wrong - com_server needs to be > module.Class, but my script is not a module. > > I've tried putting testcom.py into site-packages - when I do, I'm able > to import it as a module, but the setup script fails with the same error. > > Any suggestions? > > Thanks - > > Sean F > > > > ------------------------------------------------------- > This SF.Net email is sponsored by the new InstallShield X. > From Windows to Linux, servers to mobile, InstallShield X is the one > installation-authoring solution that does it all. Learn more and > evaluate today! http://www.installshield.com/Dev2Dev/0504 |