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

使用auto-py-to-exe生成的EXE获取执行路径错误问题求助

解决auto-py-to-exe打包后路径获取错误的问题

你用auto-py-to-exe打包Python脚本为exe后,程序能正常运行,但获取的路径是系统临时目录(比如C:\Users\username\AppData\Local\Temp\_MEI26762),而非exe实际所在的C:\Users\username\Desktop\Bot目录,导致base和logs文件夹路径错误。

问题原因

auto-py-to-exe基于PyInstaller,打包后的exe运行时会把脚本解压到系统临时目录,此时os.path.abspath(__file__)指向的是临时目录里的脚本文件,而不是你的exe所在路径。

解决方案

修改路径获取逻辑,区分打包后和未打包的运行状态:

  1. 导入sys模块
  2. 新增判断逻辑,获取正确的exe所在目录

修改后的完整代码:

import os
import sys

def get_script_dir():
    # 判断是否为打包后的可执行文件
    if getattr(sys, 'frozen', False):
        # 打包后,sys.executable指向当前运行的exe文件路径
        script_dir = os.path.dirname(os.path.abspath(sys.executable))
    else:
        # 未打包时,使用脚本文件的原始路径
        script_dir = os.path.dirname(os.path.abspath(__file__))
    return script_dir

# 获取程序所在目录
script_dir = get_script_dir()
print('Script located at:')
print(script_dir)

# 切换工作目录到程序所在位置
os.chdir(script_dir)

new_cwd = os.getcwd()

# 用os.path.join拼接路径,适配不同系统的路径分隔符
BASE_FOLDER = os.path.join(new_cwd, 'base')
LOG_FOLDER = os.path.join(new_cwd, 'logs')

print('Bases are taken from:')
print(BASE_FOLDER)
print('Logs are stored in:')
print(LOG_FOLDER)

base_csv = os.listdir(BASE_FOLDER)

额外优化

推荐使用os.path.join()拼接路径,替代直接字符串相加,这样能自动适配Windows、Linux等不同系统的路径分隔符,避免出现跨系统的路径错误。

内容的提问来源于stack exchange,提问作者Juan de la Cuadra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 05:42:43