Python 3 ejecutable como servicio de Windows

Estoy tratando de escribir un servicio de Windows en Python, pero la parte difícil es que quiero implementarlo en una máquina que no tiene Python. He creado con éxito un servicio comoesta, y funciona si ejecuto desde mi máquina. El problema comienza cuando intento convertirlo en un exe y luego trato de instalarlo. Primero intenté usar el ejemplo del servicio cx_freeze, (vistoaquí), el setup.py se ve así:

from cx_Freeze import setup, Executable

options = {'build_exe': {'includes': ['ServiceHandler']}}

executables = [Executable('Config.py', base='Win32Service', targetName='gsr.exe')]

setup(name='GSR',
    version='0.1',
    description='GSR SERVICE',
    executables=executables,
    options=options
    )

y config.py es:

NAME = 'GSR_%s'
DISPLAY_NAME = 'GSR TEST - %s'
MODULE_NAME = 'ServiceHandler'
CLASS_NAME = 'Handler'
DESCRIPTION = 'Sample service description'
AUTO_START = True
SESSION_CHANGES = False

pero cuando intento compilarlo (python setup.py build) aparece un error: "cx_Freeze.freezer.ConfigError: ninguna base llamada Win32Service"

En segundo lugar, intenté usar una configuración regular de cx_freeze, el exe que obtengo instala bien el servicio, pero una vez que intento iniciarlo recibo un error: "Error 1053: El servicio no respondió a la solicitud de inicio o control de manera oportuna"

setup.py - python 3.3 regualr exe, instala el servicio pero al intentar iniciarlo envía un error:

from cx_Freeze import setup, Executable

packages = ['win32serviceutil','win32service','win32event','servicemanager','socket','win32timezone','cx_Logging','ServiceHandler']
build_exe_options = {"packages": packages}
executable = [Executable("ServiceHandler.py")]


setup(  name = "GSR_test",
        version = "1.0",
        description = "GSR test service",
        options = {"build_exe": build_exe_options},
        executables = executable)

finalmente, logré que funcione en python 2.7 usando py2exe, pero py2exe no está disponible para python 3.3 y mi código está en 3.3

Supongo que el problema está en la configuración de setup.py que estoy usando con cx_freeze. algunas ideas ??

mi ServiceHandler:

import pythoncom
import win32serviceutil
import win32service
import win32event
import servicemanager
import socket
from test import test
import threading

class AppServerSvc (win32serviceutil.ServiceFramework):
    _svc_name_ = "GSR_test"
    _svc_display_name_ = "GSR test Service"

    def __init__(self,args):
        win32serviceutil.ServiceFramework.__init__(self,args)
        self.hWaitStop = win32event.CreateEvent(None,0,0,None)
        socket.setdefaulttimeout(60)
        self.app = test()
        self.flag = threading.Event()

    def SvcStop(self):
        self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
        win32event.SetEvent(self.hWaitStop)
        self.flag.set()

    def SvcDoRun(self):
        servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
                              servicemanager.PYS_SERVICE_STARTED,
                              (self._svc_name_,''))
        self.main()

    def main(self):
        t = threading.Thread(target=self.app.run)
        t.start()
        self.flag.wait()
        raise SystemExit

if __name__ == '__main__':
    win32serviceutil.HandleCommandLine(AppServerSvc)

Setup.py, python 2.7 usando py2exe que funciona: (tomado deaquí)

from distutils.core import setup
import py2exe

setup(  service = ["ServiceHandler"],
        description = "SERVICE TEST",
        modules = ["GSR_test"],
        cmdline_style='pywin32', ) 

Gracias Amit

Respuestas a la pregunta(3)

Su respuesta a la pregunta