>> Fixing ImageMagick & Dependency Errors: MoneyPrinterTurbo Setup via UV — One-Click on Windows, uv sync --frozen on Mac/Linux
You cloned MoneyPrinterTurbo—then the window flashed closed, Streamlit showed a red traceback, or subtitles failed with ImageMagick is not installed. Since v1.2.7 (April 2026), the project standardized on uv, pyproject.toml, and uv.lock, with uv sync --frozen as the recommended install path on macOS and Linux.
Introduction
This guide is for beginners who have the source zip but not a working Python environment. You will install the correct Python version, sync dependencies exactly as the maintainers locked them, point ImageMagick at the right binary, and start the Web UI without the usual one-click-package guesswork.
Windows one-click remains the fastest trial path on that OS. On macOS and Linux, treat uv sync --frozen as the primary workflow—same lockfile the maintainers test against v1.2.7.
If you are building broader AI automation skills (evals, agents), see AI skills every developer needs in 2026—orthogonal to this installer walkthrough.
Choose your install path
| Path | Best for | Setup time | Dependency tool |
|---|---|---|---|
| Windows one-click package | Fastest demo on Windows | ~10 min | Bundled binaries |
uv sync --frozen (this guide) | macOS / Linux / hands-on Windows | ~15–25 min | uv + uv.lock |
| Docker | Isolated machine | ~15 min | docker compose |
If you are on macOS or Linux, use uv sync --frozen. Windows users can use the one-click package first; switch to uv when you need the latest main branch or custom configs.
Architecture: what runs after install
| Component | Role | Default port |
|---|---|---|
| Streamlit Web UI | Browser-based control panel | 8501 |
FastAPI (main.py) | API server (optional) | 8080 |
| ImageMagick | Subtitle/caption rendering | CLI (magick) |
| FFmpeg | Video merge (usually via deps) | CLI |
Config file: config.toml in project root—key field for beginners:
imagemagick_path = "C:\\Program Files\\ImageMagick-7.1.1-Q16\\magick.exe" # Windows example
# macOS/Linux often: "/opt/homebrew/bin/magick" or "/usr/bin/magick"
Data flow: Web UI → Python services → ImageMagick draws text → FFmpeg muxes video. Wrong imagemagick_path = instant failure on first subtitle job.
Prerequisites
- Git installed (
git --version). - uv installed (Astral uv docs):
curl -LsSf https://astral.sh/uv/install.sh | sh # or: pip install uv - ImageMagick 7 (static build on Windows—see Step 4).
- FFmpeg on PATH (
ffmpeg -version)—required for video output. - Project folder path without non-ASCII characters on Windows (upstream warns Chinese paths cause unpredictable failures).
Python version: 3.11 (project supports >=3.11, <3.13 per uv.lock).
Seven-step runbook
Step 1 — Clone and enter project root
git clone https://github.com/harry0703/MoneyPrinterTurbo.git
cd MoneyPrinterTurbo
pwd # must end in MoneyPrinterTurbo — commands below assume this directory
Pass: you see pyproject.toml, uv.lock, config.toml, webui/Main.py.
Step 2 — Install Python 3.11 via uv
uv python install 3.11
uv python list
Pass: 3.11.x appears as available/installed.
Step 3 — Sync dependencies (frozen lock)
uv sync --frozen
Why --frozen? It installs exact versions from uv.lock—the set maintainers tested for v1.2.7. Without it, resolver drift can break Edge TTS or video pipeline pins.
Typical duration: 40–90 seconds on a warm cache; first run may take longer.
Pass: command exits 0; .venv directory exists.
Step 4 — Install and wire ImageMagick
macOS
brew install imagemagick
which magick || which convert
Set in config.toml:
imagemagick_path = "/opt/homebrew/bin/magick"
(Intel Macs may use /usr/local/bin/magick.)
Linux
sudo apt-get update && sudo apt-get install -y imagemagick ffmpeg
which magick
Windows
- Download Q16-x64-static installer from ImageMagick binaries—must include
staticin the filename. - Install to default path under
C:\Program Files\—do not change the install folder. - Edit
config.toml:
imagemagick_path = "C:\\Program Files\\ImageMagick-7.1.1-Q16\\magick.exe"
Verify:
& "C:\Program Files\ImageMagick-7.1.1-Q16\magick.exe" -version
Step 5 — Fix ImageMagick policy (if subtitles fail)
Pattern: not authorized or security policy in traceback.
Edit policy.xml (location varies; on Linux often /etc/ImageMagick-6/policy.xml or /etc/ImageMagick-7/policy.xml):
<!-- Change READ/WRITE deny rules for @* or PATH to allow temp caption files -->
<policy domain="path" rights="read|write" pattern="@*" />
Restart the app after policy edits.
Step 6 — Start Streamlit Web UI
From project root only:
uv run streamlit run ./webui/Main.py --browser.gatherUsageStats=False --server.port 8501
Open http://localhost:8501. First load may take 30–60s while imports compile.
Optional API mode:
uv run python main.py
Step 7 — Smoke test before long renders
- Use a short script (2–3 sentences).
- Pick one video source (Pexels/Pixabay—API keys in
config.tomlif required). - Generate a 10–15 second clip.
- Confirm output under
storage/or path shown in UI.
Pass: MP4 plays with readable subtitles. Fail: capture full terminal traceback—do not only screenshot the flash-close window.
Troubleshooting
Error A — Window flashes closed on double-click
Pattern: Double-clicking start.bat or python opens a console that vanishes in one second.
Fix: Run from Terminal so the error stays visible:
cd /path/to/MoneyPrinterTurbo
uv run streamlit run ./webui/Main.py --browser.gatherUsageStats=False
On Windows: Win+R → cmd → cd to project → same command.
Error B — ImageMagick is not installed
Pattern: Python traceback mentions ImageMagick or magick not found.
| Check | Command |
|---|---|
| Binary exists | magick -version or path in Step 4 |
config.toml path uses double backslashes on Windows | Open file in editor |
| No Chinese characters in install/project path | Move repo to C:\dev\MoneyPrinterTurbo |
Error C — Streamlit loads but UI lags or hangs
Pattern: Browser spinner on 8501; CPU pegged; fan noise.
Fix:
- Close other heavy apps; first run compiles caches.
- Confirm FFmpeg works:
ffmpeg -version. - Reduce parallel jobs in UI; v1.2.7 improved pipeline stability but RAM still matters (8GB+ recommended).
- If port conflict:
--server.port 8502.
uv run streamlit run ./webui/Main.py --server.port 8502 --browser.gatherUsageStats=False
When to refresh dependencies
After git pull on main:
uv sync --frozen
If lock file changed and --frozen fails:
uv sync
Only when you intentionally want resolver updates—not for first-time setup.
FAQ
What does uv sync --frozen do for MoneyPrinterTurbo?
It creates/updates .venv using exact versions from uv.lock, matching the v1.2.7 release tested by maintainers—faster and more reproducible than unpinned pip install.
Why must Windows ImageMagick be the static build?
Upstream documentation requires the Q16-x64-static installer so bundled libraries match MoviePy/subtitle tooling expectations; dynamic builds often break at runtime.
Can I use pip install -r requirements.txt instead?
Yes for legacy compatibility, but pyproject.toml + uv.lock is the primary path since v1.2.7. Prefer uv sync --frozen on macOS/Linux.
Why does Streamlit use port 8501?
That is Streamlit's default. MoneyPrinterTurbo's API mode uses 8080—ensure both ports are free or remap with --server.port.
Do I need a cloud Mac to run this?
No. Any local machine with Python 3.11, ImageMagick, and FFmpeg suffices. A remote Mac helps only if your laptop lacks RAM/disk for video jobs—you can SSH and run the same uv commands there.
The one-click Windows package vs uv—which should I pick?
One-click for the fastest trial; uv sync --frozen when you need latest code, custom config.toml, or macOS/Linux official workflow per project README.
Related reading
Stuck after the runbook?
Capture the full terminal traceback and check the upstream MoneyPrinterTurbo issues on GitHub before changing lockfiles.