将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服务的资料请关注脚本之家其它相关文章!

相关文章

  • python  UPX is not available问题解决方法

    python  UPX is not available问题解决方法

    这篇文章主要介绍了python UPX is not available问题解决,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • Python3爬虫使用Fidder实现APP爬取示例

    Python3爬虫使用Fidder实现APP爬取示例

    这篇文章主要介绍了Python3爬虫使用Fidder实现APP爬取示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • Python利用pytest和selenium实现自动化测试完整指南

    Python利用pytest和selenium实现自动化测试完整指南

    自动化测试是现代软件开发中不可或缺的一环,Python作为一门简洁优雅的编程语言,配合pytest测试框架和selenium自动化工具,为我们提供了强大的自动化测试解决方案,下面小编就来和大家简单介绍一下吧
    2025-08-08
  • python设计模式大全

    python设计模式大全

    这篇文章主要介绍了python设计模式,通过简单的代码实现了Python常见的各种设计模式,包括桥接模式、观测者模式、适配器模式、工厂模式、单例模式等,需要的朋友可以参考下
    2016-06-06
  • win10系统下Anaconda3安装配置方法图文教程

    win10系统下Anaconda3安装配置方法图文教程

    这篇文章主要为大家详细介绍了win10系统下Anaconda3安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • python 基于UDP协议套接字通信的实现

    python 基于UDP协议套接字通信的实现

    这篇文章主要介绍了python 基于UDP协议套接字通信的实现,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2021-01-01
  • python爬虫基础教程:requests库(二)代码实例

    python爬虫基础教程:requests库(二)代码实例

    这篇文章主要介绍了python爬虫基础教程:requests库(二),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Python中100个常用函数用法全面解析

    Python中100个常用函数用法全面解析

    Python是一种高级编程语言,具有很多强大的特性,其中之一就是内置函数,这篇文章主要介绍了Python中100个常用函数用法全面解析的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-12-12
  • Python实现变声器功能(萝莉音御姐音)

    Python实现变声器功能(萝莉音御姐音)

    这篇文章主要介绍了Python实现变声器功能(萝莉音御姐音),本文图文实例代码相结合给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • Python进阶之全面解读高级特性之切片

    Python进阶之全面解读高级特性之切片

    切片的作用就是截取序列对象,然而,对于非序列对象,我们是否有办法做到切片操作呢?在使用切片的过程中,有什么要点值得重视,又有什么底层原理值得关注呢?本文将主要跟大家一起来探讨这些内容
    2019-02-02

最新评论