You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将包含多依赖文件的Python脚本创建为Windows服务?

我明白你现在的困惑——当你的Windows服务依赖多个Python文件时,直接用脚本注册确实会遇到找不到依赖的问题,毕竟服务运行时的工作目录和你开发时不一样。下面我给你一步步拆解解决方案,结合你现有的代码来调整:

一、先梳理你的项目结构

首先把所有相关文件统一放在同一个目录下,保持清晰的结构,这样服务运行时能轻松找到依赖:

MyPythonService/
├── pysvc.py          # 你提供的服务主代码文件
├── python_read_email.py  # 核心依赖逻辑文件
└── [其他依赖文件/配置文件夹]  # 如果有工具类、配置文件等也放在这里
二、确保依赖文件能被正确导入

你的主文件里已经写了import python_read_email,这在同目录下是没问题的,但如果依赖文件在子文件夹里,需要做一点调整:

  1. 在子文件夹里创建空的__init__.py文件,把它变成Python包
  2. 在主服务文件开头添加路径处理,确保Python能找到子目录:
import sys
import os
# 获取当前服务文件所在的目录
service_dir = os.path.dirname(os.path.abspath(__file__))
# 把项目根目录加入Python搜索路径
sys.path.append(service_dir)

# 现在就能正常导入子目录里的模块了
from utils import python_read_email
三、注册服务时的关键操作

一定要用管理员权限打开命令提示符,切换到你的项目目录后再执行安装命令:

  • 如果你的Python在系统PATH里,直接运行:
python pysvc.py install
  • 如果用的是虚拟环境或者Python不在PATH中,要指定完整的Python路径:
C:\path\to\your\python.exe pysvc.py install
四、先调试再安装,避免踩坑

不要直接安装成服务,先在命令行用调试模式运行,验证依赖是否正常加载:

python pysvc.py debug

这个模式下会直接在控制台输出日志和报错,比如如果找不到python_read_email,会立刻抛出错误,你可以提前解决问题。

五、给你的代码加个日志功能(非常重要)

服务运行在后台,出问题很难排查,建议在SvcDoRun里加日志记录,方便定位问题:

def SvcDoRun(self):
    import servicemanager
    import logging
    import os

    service_dir = os.path.dirname(os.path.abspath(__file__))
    # 配置日志文件路径
    logging.basicConfig(
        filename=os.path.join(service_dir, "pysvc_run.log"),
        level=logging.INFO,
        format='%(asctime)s - %(levelname)s - %(message)s'
    )

    rc = None
    while rc != win32event.WAIT_OBJECT_0:
        try:
            python_read_email.run()
            logging.info("邮件读取任务执行成功")
        except Exception as e:
            logging.error(f"执行邮件任务出错: {str(e)}")
        # 阻塞5秒并监听停止信号
        rc = win32event.WaitForSingleObject(self.hWaitStop, 5000)
六、服务的常用命令

安装完成后,你可以用这些命令管理服务:

net start PySvc   # 启动服务
net stop PySvc    # 停止服务
python pysvc.py remove  # 卸载服务

内容的提问来源于stack exchange,提问作者Lalit Krishna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:05:03