-
py2app 与 Python 3.12 + Anaconda 不兼容
- 动态库链接问题(libffi.8.dylib, libexpat等)
- Python 环境混淆(系统Python vs Anaconda Python)
- 复杂的依赖关系导致打包失败
-
"Launch error" 错误原因
- py2app 无法正确处理 Anaconda 环境的库依赖
- macOS 安全机制阻止未签名的动态库加载
- Python 3.12 的新特性与 py2app 0.28 不完全兼容
优点:
- 更好的依赖处理
- 自动包含所有必需的动态库
- 支持 Python 3.12
- 生成真正独立的应用包
使用方法:
# 运行构建脚本
./build_with_pyinstaller.sh
# 或手动构建
pyinstaller File2LongImage.spec --clean --noconfirm生成的应用:File2LongImage_PyInstaller.app
优点:
- 最简单可靠
- 无需处理复杂的依赖
- 易于调试和维护
实现:
File2LongImage.app/
├── Contents/
│ ├── Info.plist
│ ├── MacOS/
│ │ └── launcher (bash脚本)
│ └── Resources/
│ ├── mac_app_parallel.py
│ ├── config.py
│ ├── error_logger.py
│ └── assets/生成的应用:File2LongImage.app
步骤:
# 使用系统 Python 创建干净的虚拟环境
/usr/bin/python3 -m venv venv_clean
source venv_clean/bin/activate
pip install -r requirements.txt
pip install py2app
python setup_parallel.py py2app- File2LongImage_PyInstaller.app - PyInstaller 构建的独立应用
- File2LongImage.app - 轻量级包装器应用
- run_parallel_app.command - 命令行启动脚本
-
确认运行的是正确的应用:
- 删除
dist/目录中的旧应用 - 使用
File2LongImage_PyInstaller.app或File2LongImage.app
- 删除
-
权限问题:
# 清除隔离属性 xattr -cr File2LongImage_PyInstaller.app # 或在系统设置中允许 系统设置 → 安全性与隐私 → 仍要打开
-
依赖缺失:
# 安装所有依赖 pip install pdf2image pillow psutil # 安装系统依赖 brew install poppler brew install --cask libreoffice
-
查看详细错误:
# 从终端运行 ./File2LongImage_PyInstaller.app/Contents/MacOS/File2LongImage -
查看系统日志:
# 打开控制台应用 open -a Console # 搜索 "File2LongImage"
-
验证 Python 环境:
which python3 python3 --version pip list | grep -E "pdf2image|Pillow|psutil"
| 方案 | 启动速度 | 文件大小 | 可靠性 | 维护难度 |
|---|---|---|---|---|
| PyInstaller | 慢(3-5秒) | 大(~200MB) | 高 | 中 |
| 轻量级包装 | 快(<1秒) | 小(<10MB) | 高 | 低 |
| py2app | 中(2-3秒) | 中(~100MB) | 低 | 高 |
- 开发阶段:使用轻量级包装器或直接运行 Python 脚本
- 分发阶段:使用 PyInstaller 构建独立应用
- 企业部署:考虑代码签名和公证
-
原生应用开发:
- 使用 Swift/SwiftUI 创建原生 macOS 应用
- Python 作为后端服务
-
Electron 方案:
- 前端:Electron + React/Vue
- 后端:Python FastAPI
-
Docker 容器化:
- 完全隔离的运行环境
- 一致的依赖管理
当前推荐使用 PyInstaller 方案,它能生成真正独立的 macOS 应用,解决了 py2app 的所有兼容性问题。
已验证可用的应用:
- ✅
File2LongImage_PyInstaller.app- 完全独立,无需Python环境 - ✅
File2LongImage.app- 轻量级,需要系统Python - ✅
run_parallel_app.command- 开发测试用
更新时间:2024-09-02 版本:2.0.0