python安装exe文件,python.exe怎么安装

  python安装exe文件,python.exe怎么安装

  Python脚本注册服务pyinstaller包exe boot自启动服务前言环境及前期工作项目结构一、本机使用方法(有python环境的计算机,即未打包使用)二、使用方法。打包到exe III后注册服务(所有计算机)的使用。打包成普通exe文件,后台无界面运行并打开自启动(未注册为服务)填坑(希望读者能用)几种常见服务命令的总结

  序

  该项目需要在任何计算机上注册并自动运行该服务(没有python环境)。为此,笔者填了好几天坑终于达到了以上要求,再录一遍,让有相同或相似需求的朋友少走弯路。

  和环境的前期工作。我自己的电脑装有anaconda(Anaconda安装和使用教程)来管理每个项目的python环境。目前pyinstaller似乎支持3.5及以上版本才能成功打包使用。考虑到每台电脑都可以用,我选择用32位python来封装32位exe文件。因为64位电脑向后兼容有32位文件,所以我做的是后端接口服务。切记不要使用FastAPI框架(pyinstaller包不支持FastAPI,会有无限递归,这是开发者和维护者还没有解决的bug)。相反,使用flask框架:

  Python3.6 32位(3.5以上都可以是64位,看大家需求)PyInstaller (Pip安装PyInstaller) PyWin32 (Pip安装PyWin32) Flask (Pip安装Flask) Flask _ CORS (Pip安装Flask _ CORS)项目结构

  Flask_test是我们自己的逻辑主函数,main是一个脚本。我们只需要在自己的脚本中添加main函数,就可以根据自己的需要把自己的逻辑main函数放在这个函数下。

  主要:

  # -*-编码:utf-8 -*-import sys,ossys . stdout=sys . stderr=open(OS . devnull, w )import win32 serviceutiimport win32 event import servicemanagerimport win32 time zone # windows服务中显示的名称类tql service(win32 service util . service framework):_ SVC _ name _= tql test _ SVC _ display _ name _= tql test _ SVC _ description _=这是一个测试项目 def _ _ CreateEvent(None,0,0,None)self . run=True def SvcDoRun(self):from flask _ test导入app app.run(host=127.0.0.1 ,port=8080) win32event。WaitForSingleObject(self . hwaitstop,win32event。INFINITE) def SvcStop(self): self。ReportServiceStatus(win32 service。SERVICE _ STOP _ PENDING)win32 event。SetEvent(self.stop_event) self。ReportServiceStatus(win32 service。SERVICE _ STOPPED)self . run=false if _ _ name _ _= _ _ main _ _ :if len(sys . argv)==1:try:evt src _ dll=OS . path . ABS path(SERVICE manager。_ _ file _ _)service manager . preparetohostsingle(tql service)#如果名称已修改,则统一service manager . initialize( tql service ,evtsrc _ dll) #如果名称已修改,则统一service manager . startservicectrldispatcher()的名称,但win32service.error除外作为详细信息:如果details==winerror,则导入winerror。ERROR _ FAILED _ SERVICE _ CONTROLLER _ CONNECT:win32 SERVICE util . usage()Else:win32 SERVICE util . handle命令行(tqlservice) #如果修改名称,名称要与芯片flask_test统一:

  Sc删除xxx删除服务sc启动xxx启动服务sc停止xxx停止服务sc查询xxx查询服务状态和pidtaskkill /pid XXX /F根据pid强制删除服务(当服务被卡住无法删除时)总结虽然过程有些困难和危险,但结果总是好的。每天,我都在填补不当行为的漏洞。希望看了这篇文章的朋友能解决自己的问题。我会把我每个项目填的坑都记录下来,让大家少走弯路。当然我没解决的漏洞就不发了,虽然我的还有一大堆bug!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: