运行Manim入门示例报错NameError:Scene未定义如何解决
报错原因
这个报错和你贴出的代码不匹配,核心诱因有两个:
- 你运行的
start.py文件里存在你没贴出来的残留代码:报错栈里提到的class Pith(Scene):就在这个文件里,要么这段代码写在了from manim import *导入语句之前,要么你写完代码没保存,命令行实际运行的是你之前编辑留存的旧版本文件。 - 小概率是Manim版本装混了:如果你装的是3Blue1Brown个人维护的
manimgl分支而不是社区版manim,导入逻辑有差异也会报类名不存在的错误,但从报错里出现你没提及的Pith类判断,基本是文件内容/保存路径的问题。
解决方法
按顺序操作即可排查修复:
- 打开
start.py全选清空所有内容,仅保留以下代码,彻底删除所有和Pith类相关的残留片段:
from manim import * class PointMovingOnShapes(Scene): def construct(self): square = Square(color=BLUE) # 创建正方形 square.rotate(-3 * TAU / 8) # 将正方形旋转-3/8*2π角度 self.play(GrowFromCenter(square))
- 按下保存快捷键确认文件写入,核对文件保存路径和你打开命令行的当前工作路径一致,避免命令调用到其他目录下同名的旧
start.py文件。 - 执行以下命令确认安装的是正确的社区版Manim,避免版本冲突:
pip uninstall manimgl -y pip install manim --upgrade
- 重新执行渲染命令即可正常生成动画:
manim -p -ql start.py PointMovingOnShapes
排查小技巧:如果操作完还是报同样的错,Windows下在命令行执行
type start.py、Mac/Linux下执行cat start.py,终端会直接打印当前路径下目标文件的实际内容,一眼就能找到没删干净的残留代码。
内容的提问来源于stack exchange,提问作者jake is the coolest
相关产品推荐
相关产品推荐

