我的目标是创建一个可用于安装Windows系统服务的. exe。 目前这只是概念的证明,所以我的服务所做的就是写入文件确认其存在。 在
从. py文件调用服务将安装并正常运行。 在py2exe中将此设置为. exe文件可以正常工作,但确实在Windows事件日志(APP应用程序)中找不到几个库。 windows可能在启动后停止服务,windows可能会忽略“找不到模块”错误。 所有这些都发生在xpsp3计算机上。 在
将使用同一py2exe编译的. exe移动到win7sp1计算机时,win7会通知您,如果没有python27.dll, exe将无法运行。 所以我把python27.dll移动到. exe的cwd上,然后win7告诉我它不能加载. dll。 尝试在xpsp2计算机上运行. exe时,XP表示无法加载文件。 在
以下代码适用:
PySvc.py (这是实际的服务,PySvc.pyinstall是用于从提示符安装的字符串。 导入win32服务
导入win32服务实用程序
导入win32事件
导入服务管理器
classpysvc (win32服务util.service framework ) :
_svc_name_='PySvc '
_svc_display_name_='Python Test '
_svc_description_='Service Test '
def __init__(self,args ) :
win32 service util.service framework._ _ init _ (self,args )
self.hwaitstop=win32 event.create event (none,0,0,none ) )。
# meatandpotatos.thisistheactualcodethat ' srun.currently testing
# toseebehaviorinsideandoutsideofloop。
efsvcdorun(self ) :
f=open('test.dat ',' w ' )
rc=None
f.write(outsideL00p(n ) ) )。
# continueiterationifstopeventnotrecieved
while rc!=win32event.WAIT_OBJECT_0:
f.write (beautifultestdatanewinsidel 00 pn ) ) )。
f.flush () )
# block for5secondsandlistenforastopevent
RC=win32 event.waitforsingleobject (self.hwaitstop,5000 )。
f .写入(shutting down (n ) )。
f.close () )
# called on shut down
defSVCstop(self ) :
self.reportservicestatus (win32服务. service _ stop _ pending ) )。
win32事件. setevent (self.hwaitstop ) )。
if __name__=='__main__':
win32服务util.handle命令行(py SVC ) )。
以下是用于创建. exe的字符串:“的代码”设置. py ' .设置. pypy2exe。 在
^{pr2}$
. exe在本地计算机上明显成功,但在其他几台计算机(未安装python )上失败,因此现在倾向于认为这是编译方式导入或导入问题。 如果有人能提供关于这个. exe为什么不想正常工作的见解,我将永远感谢。 谢谢你抽出时间。 在