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

使用auto-py-to-exe打包后程序无法将文件保存至正确路径

问题解决:打包exe后WiFi配置保存路径异常

核心原因

auto-py-to-exe基于PyInstaller,单文件打包时会将程序临时解压到C:\Users\User\AppData\Local\Temp\_MEIxxxx目录再运行,此时程序默认的工作目录是这个临时目录,而非exe文件所在的位置,导致保存路径偏离预期。

解决方案

修改代码,获取exe/脚本实际所在的目录,基于该目录创建时间命名的子文件夹,而非依赖默认工作目录。

代码修改示例

替换原代码中获取保存目录的逻辑,改用以下方式:

import os
import sys
import datetime
import subprocess

def get_base_directory():
    # 判断是否为打包后的exe运行
    if hasattr(sys, '_MEIPASS'):
        # 打包后,sys.argv[0]是exe的绝对路径
        return os.path.dirname(os.path.abspath(sys.argv[0]))
    else:
        # 脚本运行时,__file__是脚本的绝对路径
        return os.path.dirname(os.path.abspath(__file__))

# 获取基础目录(exe/脚本所在位置)
base_dir = get_base_directory()

# 创建以当前时间命名的子目录
current_time = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
save_dir = os.path.join(base_dir, current_time)
os.makedirs(save_dir, exist_ok=True)

# 执行netsh命令导出WiFi配置
netsh_command = f'netsh wlan export profile folder="{save_dir}" key=clear'
try:
    subprocess.run(netsh_command, shell=True, check=True)
    print(f"WiFi配置已成功保存到:{save_dir}")
except subprocess.CalledProcessError as e:
    print(f"导出失败:{e}")

验证步骤

  1. 用VSCode运行修改后的脚本,确认配置文件仍保存到脚本所在目录的时间子文件夹。
  2. 重新用auto-py-to-exe打包成exe,运行exe后检查exe所在目录是否生成了预期的时间子文件夹及WiFi配置文件。

额外说明

  • 若使用多文件打包模式(auto-py-to-exe中选择"One Directory"),默认工作目录就是exe所在目录,也能解决问题,但单文件模式更便于分发,推荐上述代码修改方案。
  • 无需重装软件或关闭杀毒软件,问题根源是路径获取逻辑的问题,而非环境或软件冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 13:42:16