python 打包成exe 1053_在Python中启动窗口服务时出错1053

博主在尝试将Python应用打包成exe服务时遇到1053错误,尝试修改setup.py中的参数从console变为service后,py2exe无法运行,提示找不到模块。代码中展示了服务监控服务器并记录硬盘、内存、CPU使用情况的逻辑。寻求解决方案。
摘要由CSDN通过智能技术生成

我已经看过并尝试了其他人发布的这个问题的解决方案。一位用户说,要尝试从以下位置更改我的setup.py文件:

from distutils.core import setup

import py2exe

setup(console=["dev.py"])至

from distutils.core import setup

import py2exe

setup(service=["dev.py"])我得到了以下结果:

running py2exe

*** searching for required modules ***

Traceback (most recent call last):

File "C:\Python27\Scripts\distutils-setup.py", line 5, in

setup(service=["C:\Python27\Scripts\dev.py"])

File "C:\Python27\lib\distutils\core.py", line 152, in setup

dist.run_commands()

File "C:\Python27\lib\distutils\dist.py", line 953, in run_commands

self.run_command(cmd)

File "C:\Python27\lib\distutils\dist.py", line 972, in run_command

cmd_obj.run()

File "C:\Python27\lib\site-packages\py2exe\build_exe.py", line 243, in run

self._run()

File "C:\Python27\lib\site-packages\py2exe\build_exe.py", line 296, in _run

self.find_needed_modules(mf, required_files, required_modules)

File "C:\Python27\lib\site-packages\py2exe\build_exe.py", line 1274, in

find_needed_modules

mf.import_hook(mod)

File "C:\Python27\lib\site-packages\py2exe\mf.py", line 719, in import_hook

return Base.import_hook(self,name,caller,fromlist,level)

File "C:\Python27\lib\site-packages\py2exe\mf.py", line 136, in import_hook

q, tail = self.find_head_package(parent, name)

File "C:\Python27\lib\site-packages\py2exe\mf.py", line 204, in find_head_package

raise ImportError, "No module named " + qname

ImportError: No module named dev现在,当我在安装脚本中使用“console”运行py2exe时,它工作正常,但该服务无法启动,并且出现错误。当我在安装脚本中使用“service”运行py2exe时,py2exe不能运行,并告诉我它找不到我的模块。

我试图重新安装py2exe到无法解析。我也试图改变:

def SvcDoRun(self):

servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,

servicemanager.PYS_SERVICE_STARTED,

(self._svc_name_,''))至

def SvcDoRun(self):

self.ReportServiceStatus(win32service.SERVICE_RUNNING)

win32event.WaitForSingleObject(self.hWaitStop, win32event.INFINITE)没有任何区别。任何人都可以帮我吗?这是我正在做的。它监控服务器并每隔60秒回传一个文本文件,用于在任何给定的时间监控我的服务器。任何帮助你们和加尔可以给予的帮助将会很好。

import win32serviceutil

import win32service

import win32event

import servicemanager

import socket

import wmi

import _winreg

from time import sleep

import os

class SrvMonSvc (win32serviceutil.ServiceFramework):

_svc_name_ = "SrvMonSvc"

_svc_display_name_ = "Server Monitor"

def __init__(self,args):

win32serviceutil.ServiceFramework.__init__(self,args)

self.hWaitStop = win32event.CreateEvent(None,0,0,None)

socket.setdefaulttimeout(60)

def SvcStop(self):

self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)

win32event.SetEvent(self.hWaitStop)

def SvcDoRun(self):

servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,

servicemanager.PYS_SERVICE_STARTED,

(self._svc_name_,''))

self.main()

def main(self):

host = wmi.WMI(namespace="root/default").StdRegProv

try:

result, api = host.GetStringValue(

hDefKey = _winreg.HKEY_LOCAL_MACHINE,

sSubKeyName = "SOFTWARE\Server Monitor",

sValueName = "API")

if api == None:

raise Exception

else:

pass

except:

exit()

while 1 == 1:

with open("C:/test.txt", "wb") as b:

computer = wmi.WMI(computer="exsan100")

for disk in computer.Win32_LogicalDisk (DriveType=3):

name = disk.caption

size = round(float(disk.Size)/1073741824, 2)

free = round(float(disk.FreeSpace)/1073741824, 2)

used = round(float(size), 2) - round(float(free), 2)

for mem in computer.Win32_OperatingSystem():

a_mem = (int(mem.FreePhysicalMemory)/1024)

for me in computer.Win32_ComputerSystem():

t_mem = (int(me.TotalPhysicalMemory)/1048576)

u_mem = t_mem - a_mem

for cpu in computer.Win32_Processor():

load = cpu.LoadPercentage

print >>b, api

print >>b, name

print >>b, size

print >>b, used

print >>b, t_mem

print >>b, u_mem

print >>b, load

b.close()

date_list = []

stamp = time.strftime("%c",time.localtime(time.time()))

date_list.append(stamp)

name = re.sub(r"[^\w\s]", "",date_list[0])

os.rename("C:/test.txt", ("C:/%s.txt" % name))

try:

sleep(60.00)

except:

exit()

if __name__ == '__main__':

win32serviceutil.HandleCommandLine(SrvMonSvc)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值