TextMobject 未在 Manim 中定义

TextMobject is not defined in Manim

我刚开始学习 manim,我看到了我们在 example_scenes.py 中创建 class 的第一个视频。当我尝试 运行ning 时,它说名称 TextMobject 未定义。我该怎么办?

Class 我创建了:

class FirstScene(Scene):
    def construct(self):
        text=TextMobject("text")
        self.add(text) 

conda提示中使用的代码:

python -m manim example_scenes.py FirstScene -w

请检查 this file class“FirstScene”(此文件的最后一个 class),我正在尝试 运行。

错误很简单。

"TextMobject" is not defined

这是对您的投诉 TextMobject 没有在您的代码中的任何地方定义,也没有被导入。

编辑

在补充评论和信息后,问题是 manim 库已更新,当前版本已重组其内部代码组织。您链接到的指南引用了 manim 的旧版本,您可以在其中执行 from manimlib.imports import,就好像有一个单独的 imports.py.

然而,更新版本将要求您执行:manimlib import *。这通过检查 official repository's guide. As well, this is the updated examples_scene.py 再次从其官方存储库中得到确认。

from manimlib import *

class FirstScene(Scene):
    def construct(self):
        text=TextMobject("text")
        self.add(text) 

如果它抱怨 Scene 未找到,请检查您是否安装了最新版本的软件包(如果您使用的是过时版本,请再次 git clone 并重新安装)。如果您想显式导入它,最新版本指向 Scene 位于此位置 (https://github.com/3b1b/manim/blob/master/manimlib/scene/scene.py),因此您的导入路径将为 manimlib.scene.scene:

from manimlib.scene.scene import Scene

但是,如果您使用 from manimlib import *,那么即使您不进行显式导入,它也会被导入。

您可以在包裹的 __init__.pylinked here:

上确认这一点
...
from manimlib.scene.scene import *
...

无论如何,TextMobject 要么由您定义,要么在您使用之前导入。我建议您进行更新,然后使用上面的代码重试。

编辑 2

除了导入方式的变化 Scene,根据@giac 的回答,TexMobject 重命名为 TexTextMobject 重命名为 TexText。我不会指望它仍然是正确的或者是唯一的变化所以我建议你检查 official repository 的指南如果你偶然发现这里试图得到答案。

为了以防万一,我在文件中找到了这个 whatsnew.rst

  • TexMobject重命名为TexTextMobject重命名为TexText

我对 manim 也很陌生,运行 对这个完全相同的问题也很陌生。我发现您可以将 TextMobject 替换为 TexText。我不确定到底有什么区别,但它们的字体大小似乎略有不同。我在尝试使用 TexText.

时遇到错误