Summary
The devcontainer image contains the expected pinned Manim runtime under /opt/venv, but the default command environment resolves python to /usr/local/bin/python. That interpreter does not have the project runtime dependencies installed, so the documented/default post-create style command fails unless /opt/venv/bin/python and /opt/venv/bin are used explicitly.
Observed behavior
Running the doctor flow with the default python inside the built devcontainer fails:
python -m pip install --no-deps -e .
python -m manim_studio.cli doctor --catalog
Observed failures include:
ModuleNotFoundError: No module named 'yaml'
Python import: manim: No module named 'manim'
Python import: manim_slides: No module named 'manim_slides'
Manim CLI: manim was not found on PATH
Manim Slides CLI: manim-slides was not found on PATH
Expected behavior
The devcontainer default shell and post-create command should use the pinned runtime where Manim Studio dependencies are available, so this should pass without manually specifying /opt/venv/bin/python or patching PATH per command.
Verification
The same checks pass when run with the pinned venv explicitly:
PATH=/opt/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
/opt/venv/bin/python -m manim_studio.cli doctor --catalog
With that environment:
- Manim
0.20.1: OK
- manim-slides
5.6.0: OK
- FFmpeg, LaTeX, XeLaTeX, dvisvgm, Hebrew font: OK
- strict catalog validation: OK, 5 scenes
python -m unittest discover -s tests -v: OK, 64 tests
- real
review renders for examples/square_to_circle and examples/basic_slide: OK, smoke render and contact sheet generated
- real
final render for examples/square_to_circle: OK
- real
build examples --profile review: OK
Likely fix
Update .devcontainer/Dockerfile and/or .devcontainer/devcontainer.json so the default environment prepends /opt/venv/bin to PATH, and set VS Code / post-create commands to use /opt/venv/bin/python or a shell where python resolves to the venv interpreter.
Also note: pytest is not installed in the devcontainer. CI uses python -m unittest discover -s tests -v, which currently passes.
Summary
The devcontainer image contains the expected pinned Manim runtime under
/opt/venv, but the default command environment resolvespythonto/usr/local/bin/python. That interpreter does not have the project runtime dependencies installed, so the documented/default post-create style command fails unless/opt/venv/bin/pythonand/opt/venv/binare used explicitly.Observed behavior
Running the doctor flow with the default
pythoninside the built devcontainer fails:python -m pip install --no-deps -e . python -m manim_studio.cli doctor --catalogObserved failures include:
ModuleNotFoundError: No module named 'yaml'Python import: manim: No module named 'manim'Python import: manim_slides: No module named 'manim_slides'Manim CLI: manim was not found on PATHManim Slides CLI: manim-slides was not found on PATHExpected behavior
The devcontainer default shell and post-create command should use the pinned runtime where Manim Studio dependencies are available, so this should pass without manually specifying
/opt/venv/bin/pythonor patchingPATHper command.Verification
The same checks pass when run with the pinned venv explicitly:
With that environment:
0.20.1: OK5.6.0: OKpython -m unittest discover -s tests -v: OK, 64 testsreviewrenders forexamples/square_to_circleandexamples/basic_slide: OK, smoke render and contact sheet generatedfinalrender forexamples/square_to_circle: OKbuild examples --profile review: OKLikely fix
Update
.devcontainer/Dockerfileand/or.devcontainer/devcontainer.jsonso the default environment prepends/opt/venv/bintoPATH, and set VS Code / post-create commands to use/opt/venv/bin/pythonor a shell wherepythonresolves to the venv interpreter.Also note:
pytestis not installed in the devcontainer. CI usespython -m unittest discover -s tests -v, which currently passes.