4

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

我创建的类:

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

conda 提示符中使用的代码:

python -m manim example_scenes.py FirstScene -w

请检查此文件中我正在尝试运行的“FirstScene”类(该文件的最后一个类)。

4

3 回答 3

7

我在文件中发现了这个以防万一whatsnew.rst

  • TexMobject重命名为Tex,TextMobject重命名为TexText
于 2021-02-23T15:24:14.960 回答
4

错误非常简单。

“TextMobject”未定义

这是一个抱怨,您TextMobject没有在代码中的任何地方定义,也没有导入。

编辑

在附加评论和信息之后,问题是manim库已经更新并且当前版本已经重组了其内部代码组织。您链接到的指南引用了一个旧版本manim,您会在哪里做from manimlib.imports import,就好像有一个单独的imports.py.

但是,更新的版本将要求您执行以下操作:manimlib import *. 这可以通过查看官方存储库的指南来确认。同样,这是更新的 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__.py链接在这里

...
from manimlib.scene.scene import *
...

无论哪种方式,TextMobject都应该由您定义,或者在使用之前导入。我建议您进行更新,然后使用上面的代码重试。

编辑 2

Scene根据@giac 的回答,除了您 import 方式的变化外,TexMobject还重命名为Tex并重TextMobject命名为TexText. 我不会指望它仍然是真实的或者是唯一的变化,所以如果你偶然发现这里试图得到答案,我建议你查看官方存储库的指南。

于 2021-02-14T11:00:50.723 回答
3

我对 manim 也很陌生,遇到了同样的问题。我发现你可以TextMobjectTexor代替Text。我不确定到底有什么区别,但它们似乎以稍微不同的字体大小呈现。我尝试使用时出错TexText

于 2021-03-02T15:50:40.753 回答