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

添加到Path环境变量的Python打包Exe无法读取配置文件求助

解决方案:通过获取exe实际路径加载配置文件

PyInstaller这类打包工具会在运行时将exe解压到临时目录执行,导致程序当前工作目录偏离exe的实际存放路径,直接用相对路径自然找不到.config文件。核心解决思路是获取exe本身的实际文件路径,再从该路径所在目录加载配置文件,完全不需要预定义固定路径。

具体实现方法

方法一:兼容开发与打包环境的通用写法

通过判断PyInstaller的临时环境标记,分别返回对应目录:

import sys
import os

def get_app_root_dir():
    # 识别PyInstaller打包后的临时运行环境
    if hasattr(sys, '_MEIPASS'):
        # 获取原始exe的实际路径(而非临时目录中的执行文件)
        exe_real_path = os.path.realpath(sys.executable)
        return os.path.dirname(exe_real_path)
    else:
        # 开发环境下,返回脚本所在目录
        return os.path.dirname(os.path.realpath(sys.argv[0]))

# 拼接配置文件路径并加载
config_file_path = os.path.join(get_app_root_dir(), '.config')
with open(config_file_path, 'r', encoding='utf-8') as f:
    config_content = f.read()

方法二:简化版写法(仅针对打包后的exe)

如果只考虑打包后的运行场景,可直接通过sys.executable获取原始exe路径,无需判断临时环境:

import os
import sys

# 获取exe所在的实际目录
exe_dir = os.path.dirname(os.path.abspath(sys.executable))
# 拼接配置文件路径
config_path = os.path.join(exe_dir, '.config')

打包注意事项

  • 确保.config文件与exe放在同一目录,打包时无需额外参数将配置文件嵌入exe(否则会被解压到临时目录,无法外部修改)。
  • 测试时将exe所在目录添加到系统Path环境变量后,在任意命令行窗口执行exe,程序都会自动定位到同目录下的.config文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 16:03:12