环境构建
安装python2.7安装Setup Tools在https://pypi./pypi/setuptools获取安装脚本的链接http://peak./dist/ez_setup.py,下载并运行
使用Setup Tools自动下载安装webpy库运行"C:\Python27\Scripts>easy_install.exe web.py"
手动下载安装pywin32库http:///projects/pywin32/files/pywin32/Build%20218/
下载并安装py2exe编写脚本
WebServer.pyimport web
class WebServer(web.auto_application): def run(self, port, *middleware): func = self.wsgifunc(*middleware) return web.httpserver.runsimple(func, ('0.0.0.0', port))
app = WebServer()
##########################web servicesclass hello(app.page): def GET(self): return 'Hello,world'
class visit(app.page): path = '/visit/.*' def GET(self): return 'you are visiting '+web.ctx.path########################## def main(): app.run(port=8089)
if __name__ == "__main__": main()WindowsService.pyimport win32serviceutilimport win32serviceimport win32eventimport thread
def log(message): logger = file("e:\log.txt","a") logger.write(message+"\r\n") logger.close()
class WindowsService(win32serviceutil.ServiceFramework): #这两行必须 _svc_name_ = "" _svc_display_name_ = "" def __init__(self, args): win32serviceutil.ServiceFramework.__init__(self, args) self.hWaitStop = win32event.CreateEvent(None, 0, 0, None) def SvcStop(self): self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) win32event.SetEvent(self.hWaitStop) def SvcDoRun(self): import WebServer thread.start_new(WebServer.main, ()) win32event.WaitForSingleObject(self.hWaitStop, win32event.INFINITE)setup.py# mysetup.pyfrom distutils.core import setupimport py2exe
setup(service=["WindowsService"])编译独立可执行文件
python setup.py py2exe
安装成windows服务并运行
sc create MyPythonServer binPath= f:\desktop\dist\WindowsService.exe
sc start MyPythonServer
在浏览器中访问:”http://127.0.0.1:8089/visit/whatever“,结果显示"you are visiting /visit/whatever"
Turbidsoul setup(service=["WindowsService"], zipfile=None)python setup.py py2exe -b 1这样编译之后就只有一个exe文件,不会再有一大堆其他的文件。
|