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_simple.py

83 lines
2.6 KiB

#!/usr/bin/env python3
"""
MagicWord macOS简化打包脚本
"""
import os
import sys
import subprocess
import shutil
def run_command(cmd):
"""运行命令"""
print(f"运行: {' '.join(cmd)}")
result = subprocess.run(cmd, capture_output=True, text=True)
if result.returncode != 0:
print(f"错误: {result.stderr}")
return False
return True
def main():
print("=== MagicWord macOS打包 ===")
# 清理旧的构建文件
print("清理构建文件...")
for folder in ['build', 'dist', '__pycache__']:
if os.path.exists(folder):
shutil.rmtree(folder)
# 安装依赖
print("安装依赖...")
if not run_command([sys.executable, "-m", "pip", "install", "-r", "requirements.txt"]):
return
if not run_command([sys.executable, "-m", "pip", "install", "pyinstaller"]):
return
# 构建命令 - 包含所有必要的图片和图标文件
cmd = [
sys.executable, "-m", "PyInstaller",
"--name", "MagicWord",
"--distpath", "dist",
"--workpath", "build",
# 资源文件
"--add-data", "resources:resources",
# UI图片文件
"--add-data", "src/ui/UI.png:ui",
"--add-data", "src/ui/114514.png:ui",
# 图标文件
"--add-data", "resources/icons/app_icon_32X32.png:resources/icons",
"--add-data", "resources/icons/app_icon_64X64.png:resources/icons",
"--add-data", "resources/icons/app_icon_128X128.png:resources/icons",
"--add-data", "resources/icons/app_icon_256X256.png:resources/icons",
# 隐藏导入模块
"--hidden-import", "PyQt5",
"--hidden-import", "PyQt5.QtCore",
"--hidden-import", "PyQt5.QtGui",
"--hidden-import", "PyQt5.QtWidgets",
"--hidden-import", "requests",
"--hidden-import", "beautifulsoup4",
"--hidden-import", "python-docx",
"--hidden-import", "PyPDF2",
"--hidden-import", "ebooklib",
"--hidden-import", "chardet",
"--hidden-import", "PIL",
# macOS应用选项
"--windowed",
"--osx-bundle-identifier", "com.magicword.app",
"--icon", "resources/icons/app_icon_128X128.png",
"src/main.py"
]
print("构建应用...")
if run_command(cmd):
print("✅ 构建成功!")
print(f"应用位置: {os.path.abspath('dist/MagicWord.app')}")
print("\n安装步骤:")
print("1. 将 MagicWord.app 拖拽到 Applications 文件夹")
print("2. 首次运行时,右键点击应用选择'打开'")
else:
print("❌ 构建失败!")
if __name__ == "__main__":
main()