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

如何为多入口点Python应用制作PyInstaller单可执行包?

多入口点Python程序打包为单个PyInstaller可执行文件方案

核心思路:单EXE通过命令行参数分发入口

只打包一个主入口EXE,用命令行参数指定要运行的具体实验入口(如main_1、main_2),这样仅需一次PyInstaller打包,生成单个包含所有依赖的EXE,同时支持全部入口点。

具体实现步骤

1. 编写统一主入口脚本

创建main_entry.py作为PyInstaller的打包入口,代码如下:

import sys
from my_program.main import main_1, main_2, main_N  # 导入所有实验入口函数

def main():
    if len(sys.argv) < 2:
        print("请指定要运行的实验:run-experiment-1/run-experiment-2/.../run-experiment-N")
        sys.exit(1)
    
    command = sys.argv[1]
    # 建立命令与入口函数的映射
    command_map = {
        "run-experiment-1": main_1,
        "run-experiment-2": main_2,
        # 依次添加所有N个实验的映射关系
        "run-experiment-N": main_N
    }
    
    if command not in command_map:
        print(f"无效命令:{command}")
        sys.exit(1)
    
    # 执行对应入口函数
    command_map[command]()

if __name__ == "__main__":
    main()

2. 用PyInstaller打包主脚本

执行以下命令生成单个独立EXE:

pyinstaller --onefile main_entry.py

此命令仅生成一个main_entry.exe,包含所有项目依赖,无需为每个入口重复打包。

3. 通过NSIS创建对应快捷方式

在NSIS脚本中,为每个实验入口创建快捷方式,目标指向打包好的main_entry.exe并附加对应命令行参数:

  • run-experiment-1快捷方式目标:"$INSTDIR\main_entry.exe" run-experiment-1
  • run-experiment-2快捷方式目标:"$INSTDIR\main_entry.exe" run-experiment-2
  • 以此类推,将所有快捷方式放置到开始菜单指定位置。

额外优化建议

  • 若实验数量较多,可通过动态导入简化映射逻辑,无需手动逐个添加入口:
import sys
import my_program.main as main_module

def main():
    if len(sys.argv) < 2:
        print("请指定要运行的实验:run-experiment-1/run-experiment-2/.../run-experiment-N")
        sys.exit(1)
    
    command = sys.argv[1]
    # 从命令中提取实验编号,动态匹配入口函数
    try:
        exp_num = command.split("-")[-1]
        func_name = f"main_{exp_num}"
        entry_func = getattr(main_module, func_name)
    except (IndexError, AttributeError):
        print(f"无效命令:{command}")
        sys.exit(1)
    
    entry_func()

if __name__ == "__main__":
    main()

新增实验时,只需在my_program.main中添加main_X格式的函数即可,无需修改主入口脚本。

  • 打包时可通过--name参数自定义EXE名称,比如:
pyinstaller --onefile --name my_experiments main_entry.py

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 02:15:10