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

 更新时间:2025年02月05日 08:46:25   作者:Jack663  
将 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服务的资料请关注脚本之家其它相关文章!

相关文章

  • yolov5模型配置yaml文件详细讲解

    yolov5模型配置yaml文件详细讲解

    YOLOV5模型配置文件存放在modules文件夹下,这里使用的是 yolov5s.yaml,下面这篇文章主要给大家介绍了关于yolov5模型配置yaml文件的相关资料,需要的朋友可以参考下
    2022-09-09
  • Python列表和元组的定义与使用操作示例

    Python列表和元组的定义与使用操作示例

    这篇文章主要介绍了Python列表和元组的定义与使用操作,结合实例形式分析了Python中列表和元组的功能、区别、定义及使用方法,需要的朋友可以参考下
    2017-07-07
  • Python实现双向RNN与堆叠的双向RNN的示例代码

    Python实现双向RNN与堆叠的双向RNN的示例代码

    这篇文章主要为大家详细介绍了如何利用Python语言实现双向RNN与堆叠的双向RNN,文中详细讲解了双向RNN与堆叠的双向RNN的原理及实现,需要的可以参考一下
    2022-07-07
  • 详解python中的 is 操作符

    详解python中的 is 操作符

    is 操作符是Python语言的一个内建的操作符。它的作用在于比较两个变量是否指向了同一个对象。下面通过本文给大家详细介绍python中的 is 操作符,需要的朋友参考下吧
    2017-12-12
  • pandas实战:分析三国志人物示例实现

    pandas实战:分析三国志人物示例实现

    这篇文章主要介绍了pandas实战:分析三国志人物示例实现,本文章内容详细,具有很好的参考价值,希望对大家有所帮助,需要的朋友可以参考下
    2023-01-01
  • python3.8.3安装教程及环境配置的详细教程(64-bit)

    python3.8.3安装教程及环境配置的详细教程(64-bit)

    这篇文章主要介绍了python3.8.3安装教程及环境配置的详细教程(64-bit),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Python+OpenCV目标跟踪实现基本的运动检测

    Python+OpenCV目标跟踪实现基本的运动检测

    这篇文章主要为大家详细介绍了Python+OpenCV目标跟踪实现基本的运动检测,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • python爬虫入门教程之点点美女图片爬虫代码分享

    python爬虫入门教程之点点美女图片爬虫代码分享

    这篇文章主要介绍了python爬虫入门教程之点点美女图片爬虫代码分享,本文以采集抓取点点网美女图片为例,需要的朋友可以参考下
    2014-09-09
  • Python中apply函数的用法实例教程

    Python中apply函数的用法实例教程

    这篇文章主要介绍了Python中apply函数的用法,配合实例解说,可加深读者对apply函数的理解,需要的朋友可以参考下
    2014-07-07
  • Python读写常用数据文件的示例详解

    Python读写常用数据文件的示例详解

    Python 提供了多种强大的工具和库,可以轻松实现对各种类型文件的读写操作,本文为大家整理了Python读写常用的那些数据文件的方法,希望对大家有所帮助
    2025-01-01

最新评论