exe7
This commit is contained in:
1 parent
56d915aa6d
commit
24e525ab70
4 files changed
+63
-26
No files matched your search
@@ -40,6 +40,9 @@ def build_exe():
|
|||||||
'--hidden-import=download_batch_data.main_download_batch_data_and_trans',
|
'--hidden-import=download_batch_data.main_download_batch_data_and_trans',
|
||||||
|
|
||||||
# 收集所有子模块,确保 PyInstaller 能找到所有模块
|
# 收集所有子模块,确保 PyInstaller 能找到所有模块
|
||||||
|
# 使用 collect-submodules 明确收集所有子模块
|
||||||
|
'--collect-submodules=auto_sliceing_operate', # 收集所有子模块
|
||||||
|
'--collect-submodules=download_batch_data', # 收集所有子模块
|
||||||
'--collect-all=auto_sliceing_operate', # 使用 collect-all 确保包含所有子模块和依赖
|
'--collect-all=auto_sliceing_operate', # 使用 collect-all 确保包含所有子模块和依赖
|
||||||
'--collect-all=download_batch_data', # 使用 collect-all 确保包含所有子模块和依赖
|
'--collect-all=download_batch_data', # 使用 collect-all 确保包含所有子模块和依赖
|
||||||
'--hidden-import=auto_sliceing_operate.utils',
|
'--hidden-import=auto_sliceing_operate.utils',
|
||||||
@@ -138,10 +141,19 @@ def build_exe():
|
|||||||
# 也添加到 download_batch_data/utils/ 目录(备用路径)
|
# 也添加到 download_batch_data/utils/ 目录(备用路径)
|
||||||
cmd.append(f'--add-data={small_transform_file}{path_sep}download_batch_data/utils')
|
cmd.append(f'--add-data={small_transform_file}{path_sep}download_batch_data/utils')
|
||||||
|
|
||||||
|
# 添加 Python 路径,确保 PyInstaller 能找到所有模块
|
||||||
|
# 将当前目录添加到 Python 路径中
|
||||||
|
cmd.append(f'--paths={current_dir}')
|
||||||
|
|
||||||
# 添加 hook 文件路径(如果存在)
|
# 添加 hook 文件路径(如果存在)
|
||||||
hook_path = current_dir
|
hook_path = current_dir
|
||||||
|
# 确保 hook 文件存在并添加到 PyInstaller 的 hook 搜索路径
|
||||||
if os.path.exists(os.path.join(current_dir, 'hook-auto_sliceing_operate.py')):
|
if os.path.exists(os.path.join(current_dir, 'hook-auto_sliceing_operate.py')):
|
||||||
cmd.append(f'--additional-hooks-dir={hook_path}')
|
cmd.append(f'--additional-hooks-dir={hook_path}')
|
||||||
|
if os.path.exists(os.path.join(current_dir, 'hook-download_batch_data.py')):
|
||||||
|
# 如果还没有添加 hook 路径,再次添加(不会重复)
|
||||||
|
if f'--additional-hooks-dir={hook_path}' not in cmd:
|
||||||
|
cmd.append(f'--additional-hooks-dir={hook_path}')
|
||||||
|
|
||||||
# 添加工作目录设置和主脚本
|
# 添加工作目录设置和主脚本
|
||||||
cmd.extend([
|
cmd.extend([
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
# PyInstaller hook for auto_sliceing_operate package
|
# PyInstaller hook for auto_sliceing_operate package
|
||||||
from PyInstaller.utils.hooks import collect_submodules, collect_data_files
|
from PyInstaller.utils.hooks import collect_submodules, collect_data_files
|
||||||
|
|
||||||
# 收集所有子模块
|
# 收集所有子模块(包括递归子模块)
|
||||||
hiddenimports = collect_submodules('auto_sliceing_operate')
|
hiddenimports = collect_submodules('auto_sliceing_operate')
|
||||||
|
|
||||||
# 确保包含所有必要的模块
|
# 确保包含所有必要的模块(即使 collect_submodules 已经包含,显式声明更安全)
|
||||||
hiddenimports += [
|
explicit_imports = [
|
||||||
|
'auto_sliceing_operate',
|
||||||
'auto_sliceing_operate.main_begin_sliceing',
|
'auto_sliceing_operate.main_begin_sliceing',
|
||||||
'auto_sliceing_operate.main_download_zip',
|
'auto_sliceing_operate.main_download_zip',
|
||||||
'auto_sliceing_operate.utils',
|
'auto_sliceing_operate.utils',
|
||||||
@@ -16,5 +17,9 @@ hiddenimports += [
|
|||||||
'auto_sliceing_operate.utils.oss_redis',
|
'auto_sliceing_operate.utils.oss_redis',
|
||||||
'auto_sliceing_operate.utils.request',
|
'auto_sliceing_operate.utils.request',
|
||||||
'auto_sliceing_operate.utils.logs',
|
'auto_sliceing_operate.utils.logs',
|
||||||
|
'auto_sliceing_operate.utils.zip',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# 合并列表并去重
|
||||||
|
hiddenimports = list(set(hiddenimports + explicit_imports))
|
||||||
|
|
||||||
@@ -1,11 +1,12 @@
|
|||||||
# PyInstaller hook for download_batch_data package
|
# PyInstaller hook for download_batch_data package
|
||||||
from PyInstaller.utils.hooks import collect_submodules, collect_data_files
|
from PyInstaller.utils.hooks import collect_submodules, collect_data_files
|
||||||
|
|
||||||
# 收集所有子模块
|
# 收集所有子模块(包括递归子模块)
|
||||||
hiddenimports = collect_submodules('download_batch_data')
|
hiddenimports = collect_submodules('download_batch_data')
|
||||||
|
|
||||||
# 确保包含所有必要的模块
|
# 确保包含所有必要的模块(即使 collect_submodules 已经包含,显式声明更安全)
|
||||||
hiddenimports += [
|
explicit_imports = [
|
||||||
|
'download_batch_data',
|
||||||
'download_batch_data.main_download_batch_data_and_trans',
|
'download_batch_data.main_download_batch_data_and_trans',
|
||||||
'download_batch_data.utils',
|
'download_batch_data.utils',
|
||||||
'download_batch_data.utils.funcs',
|
'download_batch_data.utils.funcs',
|
||||||
@@ -16,3 +17,6 @@ hiddenimports += [
|
|||||||
'download_batch_data.utils.logs',
|
'download_batch_data.utils.logs',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# 合并列表并去重
|
||||||
|
hiddenimports = list(set(hiddenimports + explicit_imports))
|
||||||
|
|
||||||
+36
-20
@@ -4,29 +4,45 @@ import importlib
|
|||||||
from utils.config import cfg, get_work_dir
|
from utils.config import cfg, get_work_dir
|
||||||
|
|
||||||
# 在模块级别显式导入,确保 PyInstaller 能检测到并打包这些模块
|
# 在模块级别显式导入,确保 PyInstaller 能检测到并打包这些模块
|
||||||
# 使用 try-except 避免在运行时出错(虽然这些导入应该总是成功的)
|
# 这些导入语句会被 PyInstaller 分析,确保模块被包含
|
||||||
try:
|
# 注意:不要使用 try-except,因为 PyInstaller 需要看到这些导入才能正确打包
|
||||||
# 这些导入语句会被 PyInstaller 分析,确保模块被包含
|
import auto_sliceing_operate.main_begin_sliceing
|
||||||
import auto_sliceing_operate.main_begin_sliceing as _unused1
|
import auto_sliceing_operate.main_download_zip
|
||||||
import auto_sliceing_operate.main_download_zip as _unused2
|
import download_batch_data.main_download_batch_data_and_trans
|
||||||
import download_batch_data.main_download_batch_data_and_trans as _unused3
|
|
||||||
except ImportError:
|
# 同时导入这些模块的依赖,确保所有子模块都被包含
|
||||||
# 如果导入失败(不应该发生),继续执行
|
import auto_sliceing_operate.utils
|
||||||
pass
|
import auto_sliceing_operate.utils.exe_operate
|
||||||
|
import auto_sliceing_operate.utils.click_soft_button
|
||||||
|
import auto_sliceing_operate.utils.import_all_file
|
||||||
|
import auto_sliceing_operate.utils.miniIo
|
||||||
|
import auto_sliceing_operate.utils.oss_redis
|
||||||
|
import auto_sliceing_operate.utils.request
|
||||||
|
import auto_sliceing_operate.utils.logs
|
||||||
|
import download_batch_data.utils
|
||||||
|
|
||||||
def get_command_handler(command):
|
def get_command_handler(command):
|
||||||
"""动态导入并返回命令处理函数"""
|
"""动态导入并返回命令处理函数"""
|
||||||
if command == 'batch_download':
|
try:
|
||||||
module = importlib.import_module('download_batch_data.main_download_batch_data_and_trans')
|
if command == 'batch_download':
|
||||||
return module.main
|
module = importlib.import_module('download_batch_data.main_download_batch_data_and_trans')
|
||||||
elif command == 'begin_sliceing':
|
return module.main
|
||||||
module = importlib.import_module('auto_sliceing_operate.main_begin_sliceing')
|
elif command == 'begin_sliceing':
|
||||||
return module.main
|
module = importlib.import_module('auto_sliceing_operate.main_begin_sliceing')
|
||||||
elif command == 'download_slice':
|
return module.main
|
||||||
module = importlib.import_module('auto_sliceing_operate.main_download_zip')
|
elif command == 'download_slice':
|
||||||
return module.main
|
module = importlib.import_module('auto_sliceing_operate.main_download_zip')
|
||||||
else:
|
return module.main
|
||||||
return None
|
else:
|
||||||
|
return None
|
||||||
|
except ModuleNotFoundError as e:
|
||||||
|
print(f'错误: 无法找到模块 - {e}')
|
||||||
|
print('这可能是 PyInstaller 打包问题,请检查打包配置。')
|
||||||
|
print(f'尝试导入的模块: {command}')
|
||||||
|
raise
|
||||||
|
except Exception as e:
|
||||||
|
print(f'错误: 导入模块时发生异常 - {e}')
|
||||||
|
raise
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
# 可用命令列表
|
# 可用命令列表
|
||||||
|
|||||||
Reference in new issue
Block a user