Python 使用py2exe创建windows服务

Python 使用py2exe创建windows服务,python,python-2.7,windows-services,py2exe,Python,Python 2.7,Windows Services,Py2exe,我需要将python应用程序作为windows服务运行。 我可以使用命令,python fservice.py install python fservice.py start 现在,我想使用py2exe为我的应用程序创建exe。 我遵循了这个问题的代码: setup.py 来自distutils.core导入设置 导入py2exe 导入系统 如果len(sys.argv)==1: sys.argv.append(“py2exe”) sys.argv.append(“-q”) 课程目标: def

我需要将python应用程序作为windows服务运行。 我可以使用命令,
python fservice.py install

python fservice.py start


现在,我想使用py2exe为我的应用程序创建exe。 我遵循了这个问题的代码:

setup.py

来自distutils.core导入设置
导入py2exe
导入系统
如果len(sys.argv)==1:
sys.argv.append(“py2exe”)
sys.argv.append(“-q”)
课程目标:
def初始功率(自身功率,**kw):
自我记录更新(千瓦)
#对于versioninfo资源
self.version=“0.0.1”
self.company\u name=“flotomate”
self.copyright=“无版权”
self.name=“flotomate”
myservice=Target(
#用于versioninfo资源
description=“flotomate”,
#构建内容。对于服务,模块名称(而不是
#文件名)必须指定!
模块=[“fservice”]
)
设置(
服务=[myservice]
)

fservice.py

导入系统 导入服务管理器 导入win32serviceutil 导入win32service 导入win32event 导入win32api 从页面导入应用程序 类fservice(win32serviceutil.ServiceFramework): _svc_name='flotomate'#下面是您将作为instart的参数输入的名称 _svc_display_name_='flotomate'#instart的参数 _svc_description_='flotomate'#来自instart的参数 定义初始化(self,*args): win32serviceutil.ServiceFramework.\uuuuu init\uuuuuu(self,*args) self.log('init') self.stop_event=win32event.CreateEvent(无、0、0、无) #登录到系统事件日志中 def日志(self,msg): 导入服务管理器 servicemanager.LogInfoMsg(str(msg)) def睡眠(自我,分钟): win32api.Sleep((分钟*1000),真) def SvcDoRun(自我): self.ReportServiceStatus(win32service.SERVICE\u START\u PENDING) 尝试: self.ReportServiceStatus(win32service.SERVICE\u正在运行) self.log('start') self.start() self.log('wait') win32event.WaitForSingleObject(self.stop_事件,win32event.INFINITE) self.log('done') 除例外情况外: self.SvcStop() def SvcStop(自动停止): self.ReportServiceStatus(win32service.SERVICE\u STOP\u PENDING) self.stop() win32event.SetEvent(自停止事件) self.ReportServiceStatus(win32service.SERVICE\u已停止) def启动(自): app.run(主机=0.0.0.0',端口=4999) #凌驾 def停止(自): 通过 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu': 如果len(sys.argv)==1: servicemanager.Initialize() servicemanager.PrepareToHostSingle(fservice) servicemanager.StartServiceCtrlDispatcher() 其他: win32serviceutil.HandleCommandLine(fservice) 我正在使用命令创建exe,
python setup.py py2exe


但是,当我尝试使用
fservice.exe安装该服务时--安装
我得到这个错误

回溯(最近一次呼叫最后一次):
文件“boot_service.py”,第37行,在
AttributeError:“模块”对象没有属性“初始化”



我在使用Python2.7.6和py2exe-0.6.9时遇到了相同的问题。我不知道你是否找到了解决办法

在我的例子中,原因是servicemanager未包含在编译包中。python中安装的servicemanager库似乎存在冲突

为了解决这个问题,我卸载了未使用的servicemanager,或者手动将servicemanager.pyd复制到文件夹dist,将servicemager.pyc复制到dist\library.zip。如果dist\library.zip中有一个名为servicemanager的文件夹,只需将其删除即可

如果你已经有了更好的解决方案,请分享^^