如何在auto-py-to-exe中添加.env文件及使用-onefile模式
在auto-py-to-exe中结合-onefile模式使用.env文件的方法
一、基础准备
- 在项目根目录创建
.env文件,写入API Key:API_KEY=your_actual_secret_key - 安装
python-dotenv库用于读取.env内容:pip install python-dotenv
二、代码适配(核心步骤)
-onefile模式下,exe运行时会将所有资源解压到系统临时目录,因此需要让代码能正确定位.env文件,分两种场景处理:
场景1:将.env打包进exe(固定API Key,无需用户修改)
修改代码,获取打包后的临时资源路径:
from dotenv import load_dotenv import os import sys def load_api_key(): # 判断是否为打包后的exe环境 if getattr(sys, 'frozen', False): # auto-py-to-exe打包后自动生成的临时资源目录 resource_dir = sys._MEIPASS else: # 开发环境下的脚本所在目录 resource_dir = os.path.dirname(os.path.abspath(__file__)) env_path = os.path.join(resource_dir, '.env') load_dotenv(env_path) return os.getenv("API_KEY") # 调用并验证API Key api_key = load_api_key() if not api_key: raise ValueError("未找到API_KEY,请检查.env文件配置")
场景2:让用户自行放置.env到exe同目录(允许用户配置API Key)
若需要用户自主设置API Key,无需将.env打包进exe,代码改为获取exe所在目录:
from dotenv import load_dotenv import os import sys def load_api_key(): if getattr(sys, 'frozen', False): # 打包后的exe所在目录 exe_dir = os.path.dirname(sys.executable) else: exe_dir = os.path.dirname(os.path.abspath(__file__)) env_path = os.path.join(exe_dir, '.env') load_dotenv(env_path) return os.getenv("API_KEY") api_key = load_api_key()
三、auto-py-to-exe配置(针对场景1)
如果是场景1需要打包.env,按以下步骤操作:
- 打开auto-py-to-exe,选择你的Python脚本路径
- 勾选
One File选项(启用-onefile模式) - 找到
Additional Files区域,点击Add Files,选择项目根目录的.env文件 - 对添加的
.env文件,设置Destination为.(表示将文件解压到临时目录的根路径,与代码中定位的路径匹配) - 按需配置输出目录、图标等选项,点击
Convert .py to .exe完成打包
四、注意事项
- 开发阶段,确保
.gitignore中包含.env,避免密钥泄露 - 场景2下,打包完成后需将
.env文件手动复制到exe所在目录,用户才能修改配置 - 测试打包后的exe时,若出现找不到API Key的情况,可打印
env_path变量确认路径是否正确
内容的提问来源于stack exchange,提问作者oFinally
相关产品推荐
相关产品推荐

