Context
Discovered during Course Builder demo video generation. Running docgen generate-all from a Python virtualenv finds docgen itself but cannot locate manim or vhs binaries.
Problem
When docgen is installed in a virtualenv (e.g., .venv/bin/docgen), the manim_runner.py and vhs_runner.py modules use shutil.which("manim") and shutil.which("vhs") to locate the binaries. However:
-
manim is installed in the same virtualenv (pip install manim → .venv/bin/manim), but if the user invokes docgen without activating the venv (e.g., .venv/bin/docgen generate-all), the venv's bin/ directory may not be on $PATH.
-
vhs is a Go binary typically installed at ~/go/bin/vhs, which is not on $PATH by default.
Both failures report manim not found in PATH / vhs not found in PATH with no guidance on how to fix.
Workaround applied
export PATH="$HOME/go/bin:/path/to/.venv/bin:$PATH"
docgen generate-all
Recommendations
Severity
Medium — easy workaround but confusing for first-time users. The error message gives no hint about what to do.
Context
Discovered during Course Builder demo video generation. Running
docgen generate-allfrom a Python virtualenv findsdocgenitself but cannot locatemanimorvhsbinaries.Problem
When
docgenis installed in a virtualenv (e.g.,.venv/bin/docgen), themanim_runner.pyandvhs_runner.pymodules useshutil.which("manim")andshutil.which("vhs")to locate the binaries. However:manimis installed in the same virtualenv (pip install manim→.venv/bin/manim), but if the user invokesdocgenwithout activating the venv (e.g.,.venv/bin/docgen generate-all), the venv'sbin/directory may not be on$PATH.vhsis a Go binary typically installed at~/go/bin/vhs, which is not on$PATHby default.Both failures report
manim not found in PATH/vhs not found in PATHwith no guidance on how to fix.Workaround applied
Recommendations
docgenshould check its own virtualenv'sbin/directory formanimbefore falling back to$PATHmanim_pathandvhs_pathoptions todocgen.yamlfor explicit binary pathsmanim not found. Install with: pip install manim (in this venv) or set manim_path in docgen.yaml~/go/bin/vhs,/usr/local/bin/vhs,snappath) before giving updocgen doctorcommand that checks all required binaries (manim, vhs, ffmpeg, ffprobe) and reports statusSeverity
Medium — easy workaround but confusing for first-time users. The error message gives no hint about what to do.