将 Python 脚本转换为可执行文件(.exe 文件)&把一个Python脚本注册为windows服务
python实现自动切换壁纸(win10) - 陈致远大侠 - 博客园 (cnblogs.com)
书接上文,我需要把该脚本注册为服务自动运行。实现流程like this:
c:\>python service.py install c:\>python service.py start c:\>python service.py stop
但是捏,整完我发现咋都启动不了。我猜想服务是不是像计划任务一样,不支持直接运行python导致的?
.py转成.exe 示例如下:
c:\>pip install pyinstaller
c:\>pyinstaller --onefile your_script.py
接着,就会在your_script.py同级文件夹下看到build和dist两个文件夹
在dist下会自动生成your_script.exe
注册服务示例如下:
c:\>sc create YourService binPath= "C:\Path\to\your_script.exe" start= auto DisplayName= "Your Custom Service"
做到这步依然无法正常运行该服务。查阅资料发现Windows服务得符合微软定义的编程规范(So Windows,fuck u),像是特定接口的实现、特殊操作的响应等。这里附上一个可注册为服务的python代码:
import os import sys import servicemanager import win32event import win32service import win32serviceutil # 这里替换为你的 Python 脚本的路径和名称 PYTHON_EXECUTABLE = r"C:\Python39\python.exe" SCRIPT_PATH = r"C:\Path\to\your_script.py" class MyService(win32serviceutil.ServiceFramework): _svc_name_ = "MyPythonService" _svc_display_name_ = "My Python Service" 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): servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE, servicemanager.PYS_SERVICE_STARTED, (self._svc_name_, '')) self.main() def main(self): # 在这里添加你的 Python 脚本的执行逻辑 # 例如调用你的脚本,传递参数等 os.system(f"{PYTHON_EXECUTABLE} {SCRIPT_PATH}") if __name__ == '__main__': if len(sys.argv) == 1: servicemanager.Initialize() servicemanager.PrepareToHostSingle(MyService) servicemanager.StartServiceCtrlDispatcher() else: win32serviceutil.HandleCommandLine(MyService)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具