[python-win32] win32api / py23xe / com server

Kevin Walzer kw_win at wtwinsoftware.com
Sun Aug 28 21:18:26 CEST 2011


Hello all,

I’ve continued my efforts to create a COM server with Python and have found success by implementing one without the overhead of a GUI event loop (my Tkinter app didn’t work as a COM server). I’ve created the server and confirmed that it works when run from Python, but I am not able to deploy it via py2exe. I get this familiar error: 

Traceback (most recent call last):
  File "boot_com_servers.py", line 4, in <module>
ImportError: No module named win32api

I’ve reviewed the list archives and elsewhere to determine what might be the issue, and I’ve added all the appropriate statements that I can think of to the setup script (importing various pywin modules, explicitly setting win32api as a package to include, etc.). I’m using the latest ActivePython 2.7 with fresh installations of py2exe and pythonwin on Windows 7. I’m a bit baffled here, so any advice is appreciated. My setup.py script is below. Thanks!


# -*- coding: cp1252 -*-
# This is the distutils script for creating a Python-based com (exe or dll)
# server using win32com.  This script should be run like this:
#
#  % python setup.py py2exe
#
# After you run this (from this directory) you will find two directories here:
# "build" and "dist".  The .dll or .exe in dist is what you are looking for.
##############################################################################

import glob
import os
import sys
import shutil
import pywintypes 
import pythoncom 
import win32api


try:
    # py2exe 0.6.4 introduced a replacement modulefinder.
    # This means we have to add package paths there, not to the built-in
    # one.  If this new modulefinder gets integrated into Python, then
    # we might be able to revert this some day.
    # if this doesn't work, try import modulefinder
    try:
        import py2exe.mf as modulefinder
    except ImportError:
        import modulefinder
    import win32com
    for p in win32com.__path__[1:]:
        modulefinder.AddPackagePath("win32com", p)
    for extra in ["win32com.shell"]: #,"win32com.mapi"
        __import__(extra)
        m = sys.modules[extra]
        for p in m.__path__[1:]:
            modulefinder.AddPackagePath(extra, p)
except ImportError:
    # no build path setup, no worries.
    pass


from distutils.core import setup
import py2exe
import sys




class Target:
    def __init__(self, **kw):
        self.__dict__.update(kw)
        self.version = "3.2.0"
        self.company_name = "WordTech Communications LLC"
        self.copyright = "(c) 2011 WordTech Communications LLC"
        self.name = "QuickWho"

quickwho_com_target = Target(
    description = "QuickWho COM server",
    # use module name for win32com exe/dll server
    modules = ["quickwho_com"],
    create_exe = True,
    create_dll = False
    )

setup(
    name="QuickWho",
    # the following two parameters embed support files within exe/dll file
    options={"py2exe": {
             "bundle_files": 3,
            'packages' : ['win32api']
                        }
             },
    zipfile=None,
    version="3.2.0",
    description="QuickWho COM Server",
    com_server=[quickwho_com_target],
    
    )
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-win32/attachments/20110828/d3e67d30/attachment.html>


More information about the python-win32 mailing list