https://ambientcg.com/get?file=Gravel041_1K-JPG.zip
https://ambientcg.com/get?file=Gravel042_1K-JPG.zip
https://ambientcg.com/get?file=Gravel040_1K-JPG.zip
https://ambientcg.com/get?file=Gravel023_1K-JPG.zip
https://ambientcg.com/get?file=Gravel022_1K-JPG.zip
https://ambientcg.com/get?file=Gravel026_1K-JPG.zip
https://ambientcg.com/get?file=Gravel024_1K-JPG.zip
https://ambientcg.com/get?file=Gravel038_1K-JPG.zip
https://ambientcg.com/get?file=Gravel032_1K-JPG.zip
https://ambientcg.com/get?file=Gravel039_1K-JPG.zip
https://ambientcg.com/get?file=Gravel020_1K-JPG.zip
https://ambientcg.com/get?file=Gravel037_1K-JPG.zip
https://ambientcg.com/get?file=Gravel035_1K-JPG.zip
https://ambientcg.com/get?file=Gravel033_1K-JPG.zip
- 下载大量文件,如游戏场景的材质贴图、模型、hdr 等等
- 结合 八爪鱼采集器 一起使用可以极大提高效率
- 复制采集好的下载链接粘贴到输入框,点击下载,等待下载完成
pip install -r requirements.txt方式1:让打包脚本自动处理(推荐)⭐
# 打包脚本会自动创建虚拟环境并安装依赖
./build-macos.sh
# 注意:在项目根目录运行,不要先激活虚拟环境
# 脚本会自动管理虚拟环境的激活和停用方式2:手动创建虚拟环境
# 创建虚拟环境
python3 -m venv venv
# 激活虚拟环境
source venv/bin/activate
# 安装依赖
pip install -r requirements-macos.txt
# 使用完后停用虚拟环境
deactivate为什么使用虚拟环境?
- ✅ 依赖完全隔离,不污染系统 Python
- ✅ 可以精确控制每个依赖的版本
- ✅ 删除
venv文件夹即可完全清理- ✅ 不同项目的依赖互不冲突
- ✅ Python 社区的标准最佳实践
注意:
- Windows 和 macOS 使用不同的依赖文件,因为某些依赖是平台特定的
- macOS 版本支持 Python 3.8+ (包括最新的 3.14)
- 打包脚本会自动创建和管理虚拟环境
# 生成单文件 EXE(保留控制台窗口,自动使用环境变量中的 UPX)
pyinstaller --onefile --console file_downloader.py- 输出文件位置:
dist/file_downloader.exe - UPX 使用条件:
- 若已将 UPX 添加到系统 PATH(如
C:\\upx),无需额外参数 - 若未添加 PATH,请使用
--upx-dir="C:\\upx"指定路径
- 若已将 UPX 添加到系统 PATH(如
💡 详细指南:查看 PACKAGING-GUIDE.md 了解不同打包方式的完整对比和选择建议。
动态打包,自动检测依赖,使用虚拟环境,长期稳定
# GUI 模式(无终端窗口,默认)
./build-macos.sh
# 或显式指定模式
./build-macos.sh gui # GUI 模式
./build-macos.sh console # 控制台模式(调试用)
./build-macos.sh clean # 清理构建文件和虚拟环境特点:
- ✅ 自动创建和管理虚拟环境(依赖完全隔离)
- ✅ 不依赖 spec 文件,不会过时
- ✅ PyInstaller 自动检测所有依赖
- ✅ 自动适配系统架构(Intel/Apple Silicon)
- ✅ Python 最佳实践,推荐日常使用
在保持最佳实践的同时优化体积:
# 轻量级打包(~25-30MB,比标准版小约 20-30%)
./build-macos-lite.sh
# 清理
./build-macos-lite.sh clean优化策略:
- ✅ 排除大型不必要的库(matplotlib, numpy 等)
- ✅ 优化 Python 字节码(
--optimize 2) - ✅ 仍然使用
--onedir模式(macOS 最佳实践) - ✅ 生成
.appbundle(专业外观) - ✅ 启动速度快(不需要解压)
为什么不用 --onefile?
- ❌ macOS 上启动慢(每次需要解压到临时目录)
- ❌ 与
.appbundle 不兼容 - ❌ 可能触发 Gatekeeper 安全警告
- ❌ 临时文件管理问题
动态生成优化配置,生成专业的 .app bundle:
# 使用高级打包(自动生成并优化 spec 文件)
./build-macos-advanced.sh
# 清理所有文件(包括虚拟环境)
./build-macos-advanced.sh clean额外优势:
- ✅ 生成专业的
.appbundle(双击运行) - ✅ 自动创建和管理虚拟环境
- ✅ 动态生成并优化 spec 文件(不会过时)
- ✅ 自定义 bundle 元数据和图标
特点:spec 文件动态生成,无需手动维护!
如果你熟悉 PyInstaller,可以直接使用命令行:
# 1. 安装依赖
pip3 install -r requirements-macos.txt
# 2. 打包(自动生成 .app)
pyinstaller --name "FileDownloader" --onedir --noconfirm file_downloader.py| 特性 | 标准打包 | 轻量级打包 | 高级打包 | --onefile ❌ |
|---|---|---|---|---|
| 大小 | ~35MB | ~25-30MB ⭐ | ~35MB | ~11MB |
| 启动速度 | 快 ⚡ | 快 ⚡ | 快 ⚡ | 慢 🐌 |
| .app bundle | ✅ | ✅ | ✅ | ❌ |
| macOS 兼容 | ✅ | ✅ | ✅ | |
| 优化程度 | 基础 | 高 ⭐ | 高 | N/A |
| 推荐场景 | 日常使用 | 生产发布 | 定制化 | 不推荐 |
推荐选择:
- 🎯 日常开发/测试:使用标准打包
./build-macos.sh - 🚀 正式发布/分发:使用轻量级打包
./build-macos-lite.sh - 🔧 需要定制:使用高级打包
./build-macos-advanced.sh
- 位置:
dist/FileDownloader.app - 大小:约 30-40 MB
- 架构:Universal (Intel + Apple Silicon)
```bash
open dist/FileDownloader.app
./dist/FileDownloader.app/Contents/MacOS/FileDownloader
cp -r dist/FileDownloader.app /Applications/
### 两种打包方式对比
| 特性 | 标准打包 | 高级打包 |
|-----|---------|---------|
| **稳定性** | ⭐⭐⭐⭐⭐ 不会过时 | ⭐⭐⭐ 需要维护 spec |
| **易用性** | ⭐⭐⭐⭐⭐ 一键打包 | ⭐⭐⭐ 需要了解配置 |
| **体积** | 正常 (~35MB) | 略小 (~30MB) |
| **架构** | 自动检测 | Universal Binary |
| **依赖检测** | 自动 | 手动配置 |
| **推荐场景** | 日常使用 | 生产发布 |
### macOS 打包最佳实践
✅ **推荐做法**:
- 使用 `--onedir` 而非 `--onefile`(启动更快,兼容性更好)
- 使用 `--noupx`(避免 macOS Gatekeeper 问题)
- 让 PyInstaller 自动检测依赖(比手动维护更可靠)
- 排除不必要的模块(减小体积)
- 不使用 `--strip`(保留调试信息)
❌ **避免做法**:
- `--onefile` 在 macOS 上会导致启动慢、临时文件问题
- `--upx` 可能触发安全警告
- 过度优化可能导致运行时错误
---
### ❓ 关于 `--onefile` 单文件模式
**你看到的 11MB 文件是什么?**
如果之前打包出了 11MB 的单个可执行文件,那是使用了 `--onefile` 模式:
```bash
pyinstaller --onefile file_downloader.py
# 生成: dist/file_downloader (单个可执行文件)
为什么看起来很吸引人?
- ✅ 单个文件,看起来简洁
- ✅ 体积较小(压缩后)
- ✅ 容易分发
为什么 macOS 不推荐?
-
启动慢 🐌
- 每次运行都要解压到
/var/folders/xxx/ - 首次启动可能需要几秒钟
- 每次运行都要解压到
-
临时文件问题 💾
- 在系统临时目录创建文件(约30-40MB)
- 可能不会自动清理
- 占用磁盘空间
-
macOS 安全问题 🔒
- Gatekeeper 可能报警
- 代码签名更复杂
- 公证(Notarization)困难
-
与 .app 冲突
⚠️ - 不能同时是单文件和 .app bundle
- 失去 macOS 原生应用的外观
正确的轻量化方案:
使用 ./build-macos-lite.sh:
- ✅ 保持
--onedir模式(快速启动) - ✅ 排除不必要的模块(减小体积)
- ✅ 优化字节码(减小体积)
- ✅ 生成
.appbundle(专业外观) - ✅ 最终大小:~25-30MB(比标准版小 20-30%)