问题描述
我刚开始学习 manim,我看到了第一个视频,其中我们在 example_scenes.py 中创建了一个类。当我尝试运行它时,它说名称 TextMobject
未定义。我该怎么办?
我创建的类:
class FirstScene(Scene):
def construct(self):
text=TextMobject("text")
self.add(text)
python -m manim example_scenes.py FirstScene -w
请检查 this file 以获取我正在尝试运行的“FirstScene”类(此文件的最后一个类)。
解决方法
错误很简单。
“TextMobject”未定义
这是对您 TextMobject
未在代码中的任何位置进行定义,也未导入的投诉。
编辑
补充评论和信息后,问题是manim
库已经更新,当前版本已经重新构建了其内部代码组织。您链接到的指南引用了旧版本的 manim
,您可以在其中执行 from manimlib.imports import
,就好像有一个单独的 imports.py
。
但是,更新的版本需要您执行以下操作:manimlib import *
。通过查看 official repository 的指南可以确认这一点。同样,this is the updated examples_scene.py
,同样来自它的官方存储库。
from manimlib import *
class FirstScene(Scene):
def construct(self):
text=TextMobject("text")
self.add(text)
如果它抱怨 Scene
not found,请检查您是否安装了最新版本的软件包(如果您使用的是过时的版本,请再次安装 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
、linked here 上确认这一点:
...
from manimlib.scene.scene import *
...
无论哪种方式,TextMobject
都应该由您定义,或者在您使用之前导入。我建议您进行更新,然后使用上面的代码重试。
编辑 2
除了您导入 Scene
的方式发生变化之外,根据@giac 的回答,TexMobject
被重命名为 Tex
,TextMobject
被重命名为 {{1} }.我不会指望它仍然是正确的或者是唯一的变化,因此如果您偶然发现这里试图获得答案,我建议您查看 official repository 的指南。
我在文件 whatsnew.rst
-
TexMobject
重命名为Tex
,TextMobject
重命名为TexText
我对 manim 也很陌生,遇到了完全相同的问题。我发现您可以将 TextMobject
替换为 Tex
或 Text
。我不确定到底有什么区别,但它们似乎以略有不同的字体大小呈现。我在尝试使用 TexText
时出错。