>> 安装 ImageMagick 又报错闪退?教你用 2026 最新 uv sync --frozen 轻松跑通 MoneyPrinterTurbo 避坑指南
你 clone 了 MoneyPrinterTurbo,结果窗口一闪就关、Streamlit 红字报错,或字幕阶段提示 ImageMagick is not installed。自 v1.2.7(2026 年 4 月)起,项目以 uv、pyproject.toml 与 uv.lock 为主,在 macOS / Linux 上推荐 uv sync --frozen 安装依赖。
简介
本文面向已有源码压缩包、但 Python 环境尚未跑通的新手:安装正确 Python 版本、按维护者锁定的依赖同步、把 ImageMagick 指到正确二进制,再启动 Web UI。
Windows 一键包仍是该平台上最快的试用方式;macOS / Linux 请以 uv sync --frozen 为主流程,与 v1.2.7 测试过的 lockfile 一致。
若你在搭建更广泛的 AI 自动化能力(评测、Agent),可参考 2026 开发者必备的 AI 技能——与本文安装步骤正交。
选择安装路径
| 路径 | 适合人群 | 耗时 | 依赖工具 |
|---|---|---|---|
| Windows 一键包 | Windows 上最快演示 | 约 10 分钟 | 捆绑二进制 |
uv sync --frozen(本文) | macOS / Linux / 动手型 Windows | 约 15–25 分钟 | uv + uv.lock |
| Docker | 隔离环境 | 约 15 分钟 | docker compose |
macOS / Linux 请用 uv sync --frozen。 Windows 可先一键包;需要最新 main 或自定义 config.toml 时再切到 uv。
架构:安装后跑什么
| 组件 | 作用 | 默认端口 |
|---|---|---|
| Streamlit Web UI | 浏览器控制台 | 8501 |
FastAPI(main.py) | API 服务(可选) | 8080 |
| ImageMagick | 字幕/标题渲染 | CLI(magick) |
| FFmpeg | 视频合成 | CLI |
配置文件:项目根目录 config.toml,新手关键字段:
imagemagick_path = "C:\\Program Files\\ImageMagick-7.1.1-Q16\\magick.exe" # Windows 示例
# macOS/Linux 常见:"/opt/homebrew/bin/magick" 或 "/usr/bin/magick"
数据流:Web UI → Python 服务 → ImageMagick 绘字 → FFmpeg 混流。imagemagick_path 配错会在第一次字幕任务即失败。
前置条件
- 已安装 Git(
git --version)。 - 已安装 uv(Astral uv 文档):
curl -LsSf https://astral.sh/uv/install.sh | sh # 或:pip install uv - ImageMagick 7(Windows 需 static 版,见步骤 4)。
- FFmpeg 在 PATH 上(
ffmpeg -version)。 - Windows 上项目路径勿含中文(上游警告非 ASCII 路径会导致不可预期失败)。
Python 版本:3.11(uv.lock 要求 >=3.11, <3.13)。
七步跑通手册
步骤 1 — 克隆并进入项目根目录
git clone https://github.com/harry0703/MoneyPrinterTurbo.git
cd MoneyPrinterTurbo
pwd # 必须以 MoneyPrinterTurbo 结尾
通过: 能看到 pyproject.toml、uv.lock、config.toml、webui/Main.py。
步骤 2 — 用 uv 安装 Python 3.11
uv python install 3.11
uv python list
通过: 列表中有 3.11.x。
步骤 3 — 同步依赖(冻结锁)
uv sync --frozen
为何 --frozen? 按 uv.lock 安装精确版本,与 v1.2.7 维护者测试集一致;不冻结时解析器漂移可能破坏 Edge TTS 或视频管线 pin。
典型耗时:缓存命中时 40–90 秒;首次更久。
通过: 退出码 0,存在 .venv。
步骤 4 — 安装并配置 ImageMagick
macOS
brew install imagemagick
which magick || which convert
在 config.toml 中设置:
imagemagick_path = "/opt/homebrew/bin/magick"
(Intel Mac 可能为 /usr/local/bin/magick。)
Linux
sudo apt-get update && sudo apt-get install -y imagemagick ffmpeg
which magick
Windows
- 从 ImageMagick 下载页 获取 Q16-x64-static 安装包,文件名须含
static。 - 安装到
C:\Program Files\默认路径,勿改安装目录。 - 编辑
config.toml:
imagemagick_path = "C:\\Program Files\\ImageMagick-7.1.1-Q16\\magick.exe"
验证:
& "C:\Program Files\ImageMagick-7.1.1-Q16\magick.exe" -version
步骤 5 — 修复 ImageMagick 策略(字幕失败时)
特征: 报错含 not authorized 或 security policy。
编辑 policy.xml(Linux 常见 /etc/ImageMagick-6/policy.xml 或 /etc/ImageMagick-7/policy.xml):
<policy domain="path" rights="read|write" pattern="@*" />
修改后重启应用。
步骤 6 — 启动 Streamlit Web UI
仅在项目根目录执行:
uv run streamlit run ./webui/Main.py --browser.gatherUsageStats=False --server.port 8501
打开 http://localhost:8501。首次加载可能需 30–60 秒 编译导入。
可选 API 模式:uv run python main.py
步骤 7 — 长渲染前冒烟测试
- 使用短文案(2–3 句)。
- 选一个视频源(Pexels/Pixabay,必要时在
config.toml填 API Key)。 - 生成 10–15 秒 样片。
- 在
storage/或 UI 提示路径确认输出。
通过: MP4 可播放且字幕可读。失败: 保存完整终端 traceback,不要只截闪退窗口。
排障
错误 A — 双击后窗口闪退
特征: 双击 start.bat 或 python,控制台一秒消失。
修复: 在终端运行以保留错误信息:
cd /path/to/MoneyPrinterTurbo
uv run streamlit run ./webui/Main.py --browser.gatherUsageStats=False
Windows:Win+R → cmd → cd 到项目 → 同上命令。
错误 B — ImageMagick is not installed
| 检查项 | 命令/操作 |
|---|---|
| 二进制存在 | magick -version 或步骤 4 路径 |
Windows config.toml 使用双反斜杠 | 用编辑器打开确认 |
| 安装/项目路径无中文 | 移到如 C:\dev\MoneyPrinterTurbo |
错误 C — Streamlit 能开但卡顿/假死
- 关闭其他重负载应用;首次运行会编译缓存。
- 确认
ffmpeg -version正常。 - 降低 UI 并行任务;建议 8GB+ 内存。
- 端口冲突时用
--server.port 8502。
uv run streamlit run ./webui/Main.py --server.port 8502 --browser.gatherUsageStats=False
何时刷新依赖
git pull 后执行 uv sync --frozen。若 lock 已变且 --frozen 失败,再执行 uv sync(仅在你主动接受解析器升级时)。
常见问题
uv sync --frozen 对 MoneyPrinterTurbo 做什么?
按 uv.lock 精确版本 创建/更新 .venv,与 v1.2.7 维护者测试环境一致,比未 pin 的 pip install 更快、更可复现。
Windows 为何必须用 static 版 ImageMagick?
上游要求 Q16-x64-static,以匹配 MoviePy/字幕工具链;动态版常在运行时崩溃。
能否用 pip install -r requirements.txt?
旧流程可用,但 v1.2.7 起以 pyproject.toml + uv.lock 为主;macOS/Linux 优先 uv sync --frozen。
为何 Streamlit 用 8501 端口?
Streamlit 默认端口;API 模式常用 8080,请确保端口未被占用或用 --server.port 改映射。
必须用云 Mac 吗?
不必。本机具备 Python 3.11、ImageMagick、FFmpeg 即可;仅当本机内存/磁盘不足做视频任务时,可在远程 Mac 上执行相同 uv 命令。
一键包 vs uv 怎么选?
Windows 快速试用选一键包;要最新代码、自定义配置或 macOS/Linux 官方流程选 uv sync --frozen(见项目 README)。