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.
Curriculum_Design/build_v0.3.py

110 lines
2.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#!/usr/bin/env python3
"""
MagicWord v0.3 打包脚本
版本号0.3
输出目录dist/
图标resources/icons/app_icon_256X256.png
"""
import os
import sys
import subprocess
import shutil
from pathlib import Path
def clean_dist():
"""清理dist目录"""
dist_dir = Path("dist")
if dist_dir.exists():
shutil.rmtree(dist_dir)
dist_dir.mkdir(exist_ok=True)
def build_executable():
"""使用PyInstaller构建可执行文件"""
print("开始构建 MagicWord v0.3...")
# 清理之前的构建
clean_dist()
# PyInstaller 参数
pyinstaller_args = [
"-m", "PyInstaller",
"--onefile", # 单文件模式
"--windowed", # 窗口模式(无控制台)
f"--name=MagicWord_v0.3", # 可执行文件名
f"--icon=resources/icons/app_icon_256X256.png", # 图标文件
"--add-data=resources:resources", # 添加资源文件
"--add-data=src:src", # 添加源代码
"--clean", # 清理临时文件
"--noconfirm", # 不确认覆盖
"src/main.py" # 主程序入口
]
# 执行打包命令
cmd = [sys.executable] + pyinstaller_args
print(f"执行命令: {' '.join(cmd)}")
try:
result = subprocess.run(cmd, capture_output=True, text=True)
if result.returncode != 0:
print(f"打包失败: {result.stderr}")
return False
else:
print("打包成功!")
return True
except Exception as e:
print(f"执行打包时出错: {e}")
return False
def check_output():
"""检查输出文件"""
dist_dir = Path("dist")
exe_files = list(dist_dir.glob("MagicWord_v0.3*"))
if exe_files:
print(f"生成的文件:")
for exe in exe_files:
size = exe.stat().st_size / (1024 * 1024) # MB
print(f" {exe.name} - {size:.1f} MB")
return True
else:
print("未找到生成的可执行文件")
return False
def main():
"""主函数"""
print("=" * 50)
print("MagicWord v0.3 打包工具")
print("=" * 50)
# 检查Python环境
print(f"Python版本: {sys.version}")
print(f"Python路径: {sys.executable}")
# 检查文件是否存在
required_files = [
"src/main.py",
"resources/icons/app_icon_256X256.png"
]
missing_files = []
for file in required_files:
if not Path(file).exists():
missing_files.append(file)
if missing_files:
print(f"缺少必需文件: {missing_files}")
return
# 构建可执行文件
if build_executable():
# 检查输出
if check_output():
print("\n✅ 打包完成!可执行文件位于 dist/ 目录")
else:
print("\n❌ 打包可能存在问题")
else:
print("\n❌ 打包失败")
if __name__ == "__main__":
main()