From 4d3f3cd6fd1d3b2af1bcf45c2a812cb4c8ee0e9d Mon Sep 17 00:00:00 2001 From: dongchangxi <458593490@qq.com> Date: Tue, 16 Dec 2025 18:45:39 +0800 Subject: [PATCH] exe5 --- factory_sliceing/build_exe.py | 4 ++-- factory_sliceing/main.py | 44 ++++++++++++++++++++++------------- 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/factory_sliceing/build_exe.py b/factory_sliceing/build_exe.py index 3d862c8..7255486 100644 --- a/factory_sliceing/build_exe.py +++ b/factory_sliceing/build_exe.py @@ -40,8 +40,8 @@ def build_exe(): '--hidden-import=download_batch_data.main_download_batch_data_and_trans', # 收集所有子模块,确保 PyInstaller 能找到所有模块 - '--collect-submodules=auto_sliceing_operate', - '--collect-submodules=download_batch_data', + '--collect-all=auto_sliceing_operate', # 使用 collect-all 确保包含所有子模块和依赖 + '--collect-all=download_batch_data', # 使用 collect-all 确保包含所有子模块和依赖 '--hidden-import=auto_sliceing_operate.utils', '--hidden-import=auto_sliceing_operate.utils.exe_operate', '--hidden-import=auto_sliceing_operate.utils.click_soft_button', diff --git a/factory_sliceing/main.py b/factory_sliceing/main.py index c8b9ee6..629e458 100644 --- a/factory_sliceing/main.py +++ b/factory_sliceing/main.py @@ -1,32 +1,39 @@ import sys import os -from auto_sliceing_operate.main_begin_sliceing import main as main_begin_sliceing_main -from download_batch_data.main_download_batch_data_and_trans import main as main_download_batch_data_and_trans_main -from auto_sliceing_operate.main_download_zip import main as main_download_zip_main +import importlib from utils.config import cfg, get_work_dir +def get_command_handler(command): + """动态导入并返回命令处理函数""" + if command == 'batch_download': + module = importlib.import_module('download_batch_data.main_download_batch_data_and_trans') + return module.main + elif command == 'begin_sliceing': + module = importlib.import_module('auto_sliceing_operate.main_begin_sliceing') + return module.main + elif command == 'download_slice': + module = importlib.import_module('auto_sliceing_operate.main_download_zip') + return module.main + else: + return None + if __name__ == '__main__': - # 根据参数决定执行哪个模块 - # 命令映射表:命令名 -> 处理函数 - command_handlers = { - 'batch_download': main_download_batch_data_and_trans_main, - 'begin_sliceing': main_begin_sliceing_main, - 'download_slice': main_download_zip_main, - } + # 可用命令列表 + available_commands = ['batch_download', 'begin_sliceing', 'download_slice'] # 检查参数数量 - if len(sys.argv) < 2 and sys.argv[1] != 'download_slice': + if len(sys.argv) < 2: print('Usage: python main.py [work_dir]') - print('可用命令:', ' | '.join(command_handlers.keys())) + print('可用命令:', ' | '.join(available_commands)) print('\n注意: work_dir 参数可选,如果未提供将从配置文件读取默认值') sys.exit(1) command = sys.argv[1] # 检查命令是否存在 - if command not in command_handlers: + if command not in available_commands: print(f'错误: 未知命令 "{command}"') - print('可用命令:', ' | '.join(command_handlers.keys())) + print('可用命令:', ' | '.join(available_commands)) sys.exit(1) # 获取工作目录:优先使用命令行参数,其次使用配置文件,最后使用 None @@ -41,5 +48,10 @@ if __name__ == '__main__': print(f' - Redis Host: {cfg("redis.host", "未配置")}') print(f' - 工作目录: {work_dir if work_dir else "未指定(将使用默认值)"}') - # 执行对应的处理函数 - command_handlers[command](work_dir=work_dir) \ No newline at end of file + # 动态导入并执行对应的处理函数 + handler = get_command_handler(command) + if handler is None: + print(f'错误: 无法加载命令 "{command}" 的处理模块') + sys.exit(1) + + handler(work_dir=work_dir) \ No newline at end of file