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

Python转EXE后任务计划启动报configparser.NoSectionError求助

解决Python打包EXE后任务计划启动找不到config.ini的问题

问题核心原因:os.getcwd()获取的是当前工作目录,而非EXE文件的实际存放目录。双击EXE时,工作目录默认是EXE所在文件夹;但通过Windows任务计划启动时,默认工作目录是系统目录(比如C:\Windows\System32),导致代码找不到同目录下的config.ini。

解决方案1:修改代码获取EXE实际路径

替换原代码中获取目录的逻辑,改为获取EXE文件所在的绝对目录,兼容脚本直接运行和打包后两种场景:

import time
import os
import subprocess
import sys  # 新增导入
from configparser import ConfigParser, RawConfigParser

# 获取程序所在的实际目录
if getattr(sys, 'frozen', False):
    # 打包成EXE后的运行环境
    thisfolder = os.path.dirname(sys.executable)
else:
    # 脚本直接运行的环境
    thisfolder = os.path.dirname(os.path.abspath(__file__))

# 自动拼接配置文件路径,无需手动转义反斜杠
initfile = os.path.join(thisfolder, 'config.ini')

config = RawConfigParser()
config.read(initfile)
check_every_minutes = int(config.get('general_info', 'check_every_minutes').strip()) * 60

解决方案2:修改任务计划的起始目录

如果不想修改代码,可直接在任务计划中指定启动时的工作目录:

  • 打开任务计划程序,找到目标任务 → 右键选择「属性」
  • 切换到「操作」选项卡,选中启动EXE的操作 → 点击「编辑」
  • 在「起始于(可选)」栏中,填入EXE文件所在的文件夹路径(比如D:\MyApp)
  • 保存设置后重新运行任务

额外排查技巧

可以在代码中添加日志输出,确认路径是否正确:

# 在获取路径后添加日志写入
with open(os.path.join(thisfolder, "debug.log"), "w", encoding="utf-8") as f:
    f.write(f"当前工作目录: {os.getcwd()}\n")
    f.write(f"程序所在目录: {thisfolder}\n")
    f.write(f"配置文件路径: {initfile}\n")

打包后通过任务计划启动,查看生成的debug.log,就能直观定位路径问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:35:44