#!/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()