我刚开始学习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“类(此文件的最后一个类)。
发布于 2021-02-14 11:00:50
这个错误是非常直接的。
未定义"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
根据@giac的答案,除了修改导入Scene的方式之外,TexMobject被重命名为Tex,TextMobject被重命名为TexText。我不会指望它仍然是真实的,也不会是唯一的改变,所以如果你在这里绊倒,试图得到一个答案,我建议你检查一下官方储存库的指南。
发布于 2021-02-23 15:24:14
我在whatsnew.rst文件中找到了这个以防万一
TexMobject重命名为Tex,TextMobject重命名为TexText发布于 2021-03-02 15:50:40
我对manim也很陌生,也遇到了同样的问题。我发现您可以将TextMobject替换为Tex或Text。我不知道具体的区别是什么,但它们似乎呈现的字体大小略有不同。我在使用TexText时出错了。
https://stackoverflow.com/questions/66194538
复制相似问题