3b1b/manim · warning
No scene named {name} found
Error message
No scene named {name} found What it means
note_missing_scenes runs after name-based scene filtering in get_scenes_to_render: for each name requested via the CLI that has no matching scene class in the loaded module(s), it logs 'No scene named {name} found'. Unlike errors 55/56 this only logs — it does not itself exit; but if no requested scene matched at all, classes_to_run is empty and manim falls into the empty-selection path (typically the interactive menu or an abort).
Source
Thrown at manimlib/extract_scene.py:91
pre_config["file_writer_config"]["quiet"] = True
pre_config["skip_animations"] = True
pre_scene = scene_class(**pre_config)
pre_scene.run()
total_time = pre_scene.time - pre_scene.skip_time
return int(total_time * manim_config.camera.fps)
def scene_from_class(scene_class, scene_config: Dict, run_config: Dict):
fw_config = manim_config.file_writer
if fw_config.write_to_movie and run_config.prerun:
scene_config.file_writer_config.total_frames = compute_total_frames(scene_class, scene_config)
return scene_class(**scene_config)
def note_missing_scenes(arg_names, module_names):
for name in arg_names:
if name not in module_names:
log.error(f"No scene named {name} found")
def get_scenes_to_render(all_scene_classes: list, scene_config: Dict, run_config: Dict):
if run_config["write_all"] or len(all_scene_classes) == 1:
classes_to_run = all_scene_classes
else:
name_to_class = {sc.__name__: sc for sc in all_scene_classes}
classes_to_run = [name_to_class.get(name) for name in run_config.scene_names]
classes_to_run = list(filter(lambda x: x, classes_to_run)) # Remove Nones
note_missing_scenes(run_config.scene_names, name_to_class.keys())
if len(classes_to_run) == 0:
classes_to_run = prompt_user_for_choice(all_scene_classes)
return [
scene_from_class(scene_class, scene_config, run_config)
for scene_class in classes_to_run
]View on GitHub (pinned to dee01804d4)
Solutions
- Check the scene class names in the file and pass the exact __name__
- Run with no scene name to see the printed list of available scenes
- If the module failed to import the class (ImportError swallowed at module load), fix the import — the class then appears in the list
Example fix
# before $ manim file.py MyScnee # after $ manim file.py MyScene
Defensive patterns
Strategy: validation
Validate before calling
import inspect, importlib
mod = importlib.import_module("your_module")
available = {n for n, o in inspect.getmembers(mod, inspect.isclass) if issubclass(o, object)}
missing = [n for n in requested_names if n not in available]
assert not missing, f"unknown scenes: {missing}" Type guard
def scene_exists(name: str, module) -> bool:
import inspect
return name in {n for n, _ in inspect.getmembers(module, inspect.isclass)} Prevention
- After renaming or deleting a Scene subclass, update every render command and CI script that names it
- Run once with no scene name to list what manim actually sees in the module
When it happens
Trigger: manim file.py Typpo instead of Typo; scene names gathered from multiple files where one file lacks the class; using --save_as or config that carries stale scene_names.
Common situations: Renamed or deleted scene classes; copy-pasting a render command from a project where the class was named differently; expecting snake_case file names to select scenes.
Related errors
AI-assisted analysis of 3b1b/manim@dee01804d4 (2026-08-14).
Data as JSON: /api/errors/8afb7c3045a9417f.
Report an issue: GitHub.