当前位置: 首页 > 网络编程 > python

将python打包的exe做成windows服务运行的流程步骤<

时间:2025-03-18 14:20:23 python 我要投稿
将 Python 脚本打包的 exe 文件作为 Windows 服务运行,可以通过以下步骤实现,Windows 服务是一种在后台运行的程序,通常不需要用户交互,本文给大家介绍了一个完整的指南,需要的朋友可以参考下

1. 使用 pywin32 创建 Windows 服务

pywin32 是一个 Python 库,提供了与 Windows API 的接口,可以用来创建和管理 Windows 服务。

安装 pywin32

pip install pywin32

编写服务代码

以下是一个简单的 Python 脚本示例,用于创建一个 Windows 服务:

import win32serviceutil
import win32service
import win32event
import servicemanager
import socket
import time

class MyService(win32serviceutil.ServiceFramework):
    _svc_name_ = "MyPythonService"  # 服务名称
    _svc_display_name_ = "My Python Service"  # 显示名称
    _svc_description_ = "This is a Python-based Windows service."  # 服务描述

    def __init__(self, args):
        win32serviceutil.ServiceFramework.__init__(self, args)
        self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)
        self.is_alive = True

    def SvcStop(self):
        self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
        win32event.SetEvent(self.hWaitStop)
        self.is_alive = False

    def SvcDoRun(self):
        servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
                              servicemanager.PYS_SERVICE_STARTED,
                              (self._svc_name_, ''))
        self.main()

    def main(self):
        while self.is_alive:
            # 在这里编写你的服务逻辑
            print("Service is running...")
            time.sleep(5)

if __name__ == '__main__':
    win32serviceutil.HandleCommandLine(MyService)

说明

  • _svc_name_:服务的内部名称。
  • _svc_display_name_:在 Windows 服务管理器中显示的名称。
  • _svc_description_:服务的描述信息。
  • SvcDoRun:服务启动时运行的逻辑。
  • SvcStop:服务停止时运行的逻辑。

2. 将 Python 脚本打包为 exe

使用 PyInstaller 将上述脚本打包为 exe 文件:

pyinstaller --onefile your_service_script.py

生成的 exe 文件位于 dist 目录中。

3. 安装服务

使用 sc 命令将 exe 文件安装为 Windows 服务:

sc create MyPythonService binPath= "C:\path\to\your_service_script.exe"
  • MyPythonService:服务的名称。
  • binPath:exe 文件的完整路径。

4. 启动服务

使用以下命令启动服务:

sc start MyPythonService

5. 停止和删除服务

  • 停止服务:
sc stop MyPythonService
  • 删除服务:
sc delete MyPythonService

6. 调试服务

  • 如果服务无法启动,可以查看 Windows 事件日志(Event Viewer)中的错误信息。
  • 也可以在服务代码中添加日志记录功能,以便调试。

7. 注意事项

  • 确保你的 exe 文件具有管理员权限。
  • 如果服务需要访问网络或其他系统资源,请确保配置了正确的权限。
  • 如果服务需要与用户交互,请使用 win32service.SERVICE_INTERACTIVE_PROCESS 标志。

通过以上步骤,你可以将 Python 脚本打包的 exe 文件作为 Windows 服务运行。如果遇到问题,请提供具体的错误信息以便进一步分析。

以上就是将python打包的exe做成windows服务运行的流程步骤的详细内容,更多关于python exe做成windows服务的资料请关注本站其它相关文章!