# 打包说明 ## 方法一:使用 Python 脚本打包(推荐) ### Windows ```bash python build_exe.py ``` ### 打包后清理临时文件 ```bash python build_exe.py --clean ``` ### 仅清理临时文件 ```bash python build_exe.py --clean-only ``` ## 方法二:使用批处理文件(Windows) 直接双击运行 `build_exe.bat` 或在命令行执行: ```bash build_exe.bat ``` ## 方法三:手动使用 PyInstaller ```bash # 安装 PyInstaller(如果未安装) pip install pyinstaller # 打包 pyinstaller --name=factory_sliceing --onefile --console --clean main.py ``` ## 使用打包后的 exe 打包完成后,exe 文件位于 `dist/factory_sliceing.exe` 使用方法: ```bash factory_sliceing.exe ``` 可用命令: - `batch_dwonload` - 批量下载 - `begin_sliceing` - 开始切片 - `download_zip` - 下载压缩包 示例: ```bash factory_sliceing.exe begin_sliceing C:\work\data ``` ## 注意事项 1. **依赖项**: 确保所有依赖已安装(redis, oss2, requests, uiautomation, pywin32 等) 2. **隐藏导入**: 打包脚本已自动包含常见模块(uiautomation, win32gui 等),如果运行时仍提示模块未找到,可以在 `build_exe.py` 中添加 `--hidden-import` 参数 3. **数据文件**: - `small_machine_transform.py` 已自动包含在打包脚本中(作为数据文件) - 如果项目需要其他配置文件或数据文件,需要添加 `--add-data` 参数 4. **文件大小**: 打包后的 exe 文件可能较大(通常 50-200MB),这是正常的,因为包含了 Python 解释器和所有依赖 5. **uiautomation**: 已自动包含在打包脚本中,使用 `--collect-all=uiautomation` 确保完整打包 6. **small_machine_transform.py**: 已自动包含在打包脚本中,会被 Blender 作为外部脚本调用 ## 故障排除 ### 问题:打包后 exe 无法运行 - 检查是否所有依赖都已正确安装 - 尝试在命令行运行 exe 查看错误信息 - 检查是否有隐藏导入的模块未添加 ### 问题:模块未找到错误(如 uiautomation, win32gui, minio) - **已修复**: - `uiautomation` 模块已添加到打包脚本中,使用 `--collect-all=uiautomation` - `win32gui` 等 pywin32 模块已添加,使用 `--collect-all=pywin32` 确保包含所有 DLL 文件 - `minio` 模块已添加,使用 `--collect-all=minio` 确保包含所有子模块 - 如果遇到其他模块未找到,在 `build_exe.py` 中添加对应的 `--hidden-import` 参数 - 或者使用 `--collect-all=<模块名>` 参数收集所有子模块和 DLL 文件 - 常见问题模块:`uiautomation`, `win32gui`, `win32con`, `win32api`, `win32process`, `psutil`, `minio` - **注意**: - pywin32 包含很多 DLL 文件,必须使用 `--collect-all=pywin32` 才能正确打包 - minio 有多个子模块,使用 `--collect-all=minio` 确保完整打包 ### 问题:文件过大 - 这是正常的,PyInstaller 会打包 Python 解释器和所有依赖 - 可以使用 `--exclude-module` 排除不需要的模块来减小体积 ### 问题:转换脚本文件不存在(small_machine_transform.py) - **已修复**: `small_machine_transform.py` 已自动包含在打包脚本中 - 如果仍然提示文件不存在,检查 `build_exe.py` 中的 `--add-data` 参数是否正确 - 文件会被放在 `_MEIPASS/utils/` 和 `_MEIPASS/download_batch_data/utils/` 目录下