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

使用auto-py-to-exe打包多Python脚本为.exe时文件找不到问题排查

解决auto-py-to-exe打包后subprocess调用脚本找不到文件的问题

问题原因

打包成单EXE后,程序运行时会被解压到系统临时目录,原脚本里用相对路径调用DataProcess.py和DeleteFiles.py的方式失效;同时直接调用系统python解释器,无法正确关联打包后的Python独立环境。

解决方案

方案一:将子脚本作为模块导入执行(推荐)

把两个子脚本的核心逻辑封装成函数,主脚本直接导入调用,既能避免subprocess的额外开销,打包时也会自动包含这些模块。

  1. 修改DataProcess.py,把核心代码放入main()函数:
def main():
    # 原GUI与数据处理的全部代码
    ...

if __name__ == "__main__":
    main()
  1. 修改DeleteFiles.py,同理封装核心逻辑:
def main():
    # 原删除临时文件的全部代码
    ...

if __name__ == "__main__":
    main()
  1. 修改主脚本:
import DataProcess
import DeleteFiles
import time

DataProcess.main()
time.sleep(5)
DeleteFiles.main()

直接用auto-py-to-exe打包主脚本即可,无需额外配置。

方案二:保留subprocess调用,调整路径与打包配置

如果必须保留subprocess调用方式,需修改路径逻辑并配置打包时包含子脚本:

  1. 修改主脚本,获取打包后的临时目录并构建绝对路径:
import subprocess
import time
import sys
import os

# 获取程序运行的根目录:打包后用临时目录,未打包时用当前脚本目录
base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))

# 构建子脚本的绝对路径
data_process_script = os.path.join(base_path, "DataProcess.py")
delete_files_script = os.path.join(base_path, "DeleteFiles.py")

# 用当前程序关联的Python解释器调用脚本
subprocess.call([sys.executable, data_process_script])
time.sleep(5)
subprocess.call([sys.executable, delete_files_script])
  1. 配置auto-py-to-exe:
  • 在界面的Additional Files区域,点击Add Files,选择DataProcess.py和DeleteFiles.py,确保它们会被打包并随主程序解压到临时目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:52:45