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

如何将多个Python脚本与一个JSON文件打包为单个EXE可执行文件?

把多个Python脚本+JSON文件打包成单个EXE的完整实现

我来给你一个亲测有效的实现方案,用PyInstaller就能轻松搞定这个需求,步骤清晰,跟着做就行!

1. 准备工作

首先确保你已经安装了PyInstaller,没装的话用pip一键安装:

pip install pyinstaller

2. 项目结构示例

先理清楚你的项目文件布局,我这里做个通用示例,你可以对应改成自己的文件:

my_packed_app/
├── main.py          # 程序的主入口脚本
├── utils.py         # 自定义依赖工具脚本
├── config.json      # 需要打包的JSON数据文件
└── helper_module.py # 其他自定义业务模块

3. 关键代码实现

重点要处理打包后的文件路径问题——PyInstaller会把所有资源放到临时目录,直接用相对路径会找不到文件,所以要写一个兼容打包前后的路径获取函数。

主入口脚本 main.py

import sys
import os
import json

def get_resource_path(relative_path):
    """获取资源文件的正确路径,兼容打包前后两种场景"""
    try:
        # 打包后,PyInstaller会自动设置这个变量指向临时资源目录
        base_path = sys._MEIPASS
    except Exception:
        # 未打包时,用当前脚本所在的目录
        base_path = os.path.abspath(".")
    return os.path.join(base_path, relative_path)

# 读取JSON数据文件
json_file_path = get_resource_path("config.json")
with open(json_file_path, "r", encoding="utf-8") as f:
    app_config = json.load(f)

print("✅ 成功加载配置:")
print(app_config)

# 导入并使用自定义依赖模块
from utils import show_greeting
from helper_module import calculate_sum

show_greeting(app_config["app_name"])
print("🔢 计算结果:", calculate_sum(10, 20))

依赖脚本 utils.py

def show_greeting(app_name):
    print(f"👋 欢迎使用 {app_name}!")

依赖脚本 helper_module.py

def calculate_sum(a, b):
    return a + b

JSON数据文件 config.json

{
    "app_name": "我的打包工具",
    "version": "1.0.0",
    "author": "isrj5",
    "settings": {
        "auto_save": true,
        "theme": "dark"
    }
}

4. 打包命令

有两种打包方式,选适合你的场景就行:

方式1:直接命令行打包(适合简单项目)

打开终端进入项目根目录,运行以下命令(注意Windows和类Unix系统的路径分隔符差异):

# Windows系统用分号分隔路径
pyinstaller --onefile --add-data "config.json;." --add-data "utils.py;." --add-data "helper_module.py;." main.py

# Mac/Linux系统用冒号分隔路径
pyinstaller --onefile --add-data "config.json:." --add-data "utils.py:." --add-data "helper_module.py:." main.py

参数说明:

  • --onefile:生成单个独立的EXE文件
  • --add-data:将指定的依赖文件/脚本打包进EXE,格式是"源文件;目标目录"(Windows)或"源文件:目标目录"(类Unix)

方式2:用spec文件打包(适合复杂项目)

如果你的项目有大量依赖或特殊配置,推荐用spec文件更灵活:

  1. 先生成默认的spec文件:
pyi-makespec --onefile main.py
  1. 打开生成的main.spec文件,找到datas参数,添加你的依赖文件:
a = Analysis(
    ['main.py'],
    pathex=[],
    binaries=[],
    # 在这里添加所有需要打包的文件,格式是(源文件路径, 目标目录)
    datas=[('config.json', '.'), ('utils.py', '.'), ('helper_module.py', '.')],
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    noarchive=False,
)
# 下面的内容保持默认即可
  1. 用spec文件执行打包:
pyinstaller main.spec

5. 验证效果

打包完成后,项目根目录会生成dist文件夹,里面就是你的单个EXE文件(Windows是.exe,Mac是.app,Linux是可执行文件)。双击运行它,你应该能看到控制台输出JSON配置内容、问候语和计算结果,说明所有文件都成功打包进去了!


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:33:57