You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4.9 KiB
4.9 KiB
打包说明
方法一:使用 Python 脚本打包(推荐)
Windows
python build_exe.py
打包后清理临时文件
python build_exe.py --clean
仅清理临时文件
python build_exe.py --clean-only
方法二:使用批处理文件(Windows)
直接双击运行 build_exe.bat 或在命令行执行:
build_exe.bat
方法三:手动使用 PyInstaller
# 安装 PyInstaller(如果未安装)
pip install pyinstaller
# 打包
pyinstaller --name=factory_sliceing --onefile --console --clean main.py
使用打包后的 exe
打包完成后,exe 文件位于 dist/factory_sliceing.exe
配置文件
重要: 打包后的 exe 需要配置文件 config.toml 才能正常运行。
- 配置文件位置: 必须放在 exe 同级目录(与
factory_sliceing.exe同一目录) - 自动复制: 打包脚本会自动将
config.toml复制到dist/目录 - 如果配置文件不存在: 打包脚本会尝试复制
config.example.toml作为模板,你需要根据实际情况修改
配置文件示例:
[redis]
host = "your-redis-host"
password = "your-redis-password"
port = 6379
db = 6
[oss]
access_key_id = "your-access-key-id"
access_key_secret = "your-access-key-secret"
endpoint = "oss-cn-shanghai.aliyuncs.com"
bucket = "your-bucket-name"
[api]
base_url = "https://mp.api.suwa3d.com"
env = "prod"
[work]
default_dir = "C:\\work" # 默认工作目录
使用方法
factory_sliceing.exe <command> [work_dir]
可用命令:
batch_download- 批量下载begin_sliceing- 开始切片download_zip- 下载压缩包
参数说明:
command: 必需,要执行的命令work_dir: 可选,工作目录。如果未提供,将从配置文件读取work.default_dir,如果配置文件中也没有,则使用 exe 所在目录
示例:
# 使用命令行参数指定工作目录
factory_sliceing.exe begin_sliceing C:\work\data
# 使用配置文件中的默认工作目录
factory_sliceing.exe begin_sliceing
注意事项
- 依赖项: 确保所有依赖已安装(redis, oss2, requests, uiautomation, pywin32 等)
- 隐藏导入: 打包脚本已自动包含常见模块(uiautomation, win32gui 等),如果运行时仍提示模块未找到,可以在
build_exe.py中添加--hidden-import参数 - 数据文件:
small_machine_transform.py已自动包含在打包脚本中(作为数据文件)- 如果项目需要其他配置文件或数据文件,需要添加
--add-data参数
- 文件大小: 打包后的 exe 文件可能较大(通常 50-200MB),这是正常的,因为包含了 Python 解释器和所有依赖
- uiautomation: 已自动包含在打包脚本中,使用
--collect-all=uiautomation确保完整打包 - small_machine_transform.py: 已自动包含在打包脚本中,会被 Blender 作为外部脚本调用
故障排除
问题:打包后 exe 无法运行
- 检查是否所有依赖都已正确安装
- 尝试在命令行运行 exe 查看错误信息
- 检查是否有隐藏导入的模块未添加
问题:模块未找到错误(如 uiautomation, win32gui, minio)
- 已修复:
uiautomation模块已添加到打包脚本中,使用--collect-all=uiautomationwin32gui等 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确保完整打包
- pywin32 包含很多 DLL 文件,必须使用
问题:文件过大
- 这是正常的,PyInstaller 会打包 Python 解释器和所有依赖
- 可以使用
--exclude-module排除不需要的模块来减小体积
问题:转换脚本文件不存在(small_machine_transform.py)
- 已修复:
small_machine_transform.py已自动包含在打包脚本中 - 如果仍然提示文件不存在,检查
build_exe.py中的--add-data参数是否正确 - 文件会被放在
_MEIPASS/utils/和_MEIPASS/download_batch_data/utils/目录下
问题:配置文件不存在或读取失败
- 配置文件位置: 必须放在 exe 同级目录(与
factory_sliceing.exe同一目录) - 打包脚本会自动复制
config.toml到dist/目录 - 如果配置文件不存在,程序会使用默认值或提示错误
- 可以复制
config.example.toml并重命名为config.toml,然后根据实际情况修改