如何修复 Manim Hello World 程序中的 AttributeError?
How can I fix AttributeError in Manim Hello World program?
我正在尝试用 Manim 编写 Hello World 程序。
我已经安装了 Manim 及其必备程序,并且可以 运行 按预期从命令提示符中获取示例代码。此示例代码以一种不寻常的方式运行;用户发出的命令不仅指定了 .py 文件,还指定了其中的单个 class,并且 Python 执行 class 定义代码,似乎没有实例化 class .
现在我正在尝试编写一个独立的 .py 文件,该文件通过在 运行 时实例化 class 来工作(我 运行 在 Visual Studio 社区中使用它2019),而不是需要外部命令。
我检查了很多类似的问题,但不幸的是,它们大体上都是关于 Hello World 程序的,甚至跨越了许多非 Python 语言。
我在搜索中发现了一些 AttributeError: '____' object has no attribute '____' 问题,包括这个有用的解释 (),但似乎没有适用于我明确编写的代码。
我也在IRC上查了下,提示问题是在导入的代码中触发的。但是,相同的代码在导入到示例中时可以正常运行,所以我一定是用错了。
这是我的 Hello World 程序的当前代码。
from manimlib.imports import *
class GreetingScript(Scene):
def construct(self):
characters = TextMobject("Hello World!")
self.add(characters)
scene1 = Scene()
readthrough = GreetingScript(scene1)
这是上述代码产生的错误信息。
Media will be stored in ./media\. You can change this behavior by writing a
diff
erent directory to media_dir.txt.
Traceback (most recent call last):
File "C:\Users\Admin\Documents\Visual Studio
2019\Projects\PythonApplication1\
PythonApplication1\PythonApplication1.py", line 8, in <module>
scene1 = Scene()
File "C:\Users\Admin\PortableApps\manim-0.1.5\manimlib\scene\scene.py",
line 3
7, in __init__
self, **self.file_writer_config,
File "C:\Users\Admin\PortableApps\manim-
0.1.5\manimlib\scene\scene_file_writer
.py", line 44, in __init__
self.init_output_directories()
File "C:\Users\Admin\PortableApps\manim-
0.1.5\manimlib\scene\scene_file_writer
.py", line 49, in init_output_directories
output_directory = self.output_directory or
self.get_default_output_director
y()
File "C:\Users\Admin\PortableApps\manim-
0.1.5\manimlib\scene\scene_file_writer
.py", line 80, in get_default_output_directory
filename = os.path.basename(self.input_file_path)
AttributeError: 'SceneFileWriter' object has no attribute 'input_file_path'
Press any key to continue . . .
我希望程序的输出是文本 "Hello World!" 的显示,但实际输出是 AttributeError: 'SceneFileWriter' object has no attribute 'input_file_path' 伴随着其余以上消息。
from big_ol_pile_of_manim_imports import *
class makeText(Scene):
def construct(self):
#######Code#######
#Making text
first_line = TextMobject("Manim is fun")
second_line = TextMobject("and useful")
final_line = TextMobject("Hope you like it too!", color=BLUE)
color_final_line = TextMobject("Hope you like it too!")
#Coloring
color_final_line.set_color_by_gradient(BLUE,PURPLE)
#Position text
second_line.next_to(first_line, DOWN)
#Showing text
self.wait(1)
self.play(Write(first_line), Write(second_line))
self.wait(1)
self.play(FadeOut(second_line), ReplacementTransform(first_line, final_line))
self.wait(1)
self.play(Transform(final_line, color_final_line))
self.wait(2)
你试过吗?
解决此问题的最佳方法是删除创建 scene1
对象的代码。要使此代码正常工作,需要 仅 实现场景的来源 class,并且您可以使用以下方式生成场景:
$ python -m manim -p /path/to/source.py GreetingScript
-p
标志表示渲染场景后打开视频。希望对您的问题有所帮助。
我正在尝试用 Manim 编写 Hello World 程序。
我已经安装了 Manim 及其必备程序,并且可以 运行 按预期从命令提示符中获取示例代码。此示例代码以一种不寻常的方式运行;用户发出的命令不仅指定了 .py 文件,还指定了其中的单个 class,并且 Python 执行 class 定义代码,似乎没有实例化 class .
现在我正在尝试编写一个独立的 .py 文件,该文件通过在 运行 时实例化 class 来工作(我 运行 在 Visual Studio 社区中使用它2019),而不是需要外部命令。
我检查了很多类似的问题,但不幸的是,它们大体上都是关于 Hello World 程序的,甚至跨越了许多非 Python 语言。
我在搜索中发现了一些 AttributeError: '____' object has no attribute '____' 问题,包括这个有用的解释 (),但似乎没有适用于我明确编写的代码。
我也在IRC上查了下,提示问题是在导入的代码中触发的。但是,相同的代码在导入到示例中时可以正常运行,所以我一定是用错了。
这是我的 Hello World 程序的当前代码。
from manimlib.imports import *
class GreetingScript(Scene):
def construct(self):
characters = TextMobject("Hello World!")
self.add(characters)
scene1 = Scene()
readthrough = GreetingScript(scene1)
这是上述代码产生的错误信息。
Media will be stored in ./media\. You can change this behavior by writing a
diff
erent directory to media_dir.txt.
Traceback (most recent call last):
File "C:\Users\Admin\Documents\Visual Studio
2019\Projects\PythonApplication1\
PythonApplication1\PythonApplication1.py", line 8, in <module>
scene1 = Scene()
File "C:\Users\Admin\PortableApps\manim-0.1.5\manimlib\scene\scene.py",
line 3
7, in __init__
self, **self.file_writer_config,
File "C:\Users\Admin\PortableApps\manim-
0.1.5\manimlib\scene\scene_file_writer
.py", line 44, in __init__
self.init_output_directories()
File "C:\Users\Admin\PortableApps\manim-
0.1.5\manimlib\scene\scene_file_writer
.py", line 49, in init_output_directories
output_directory = self.output_directory or
self.get_default_output_director
y()
File "C:\Users\Admin\PortableApps\manim-
0.1.5\manimlib\scene\scene_file_writer
.py", line 80, in get_default_output_directory
filename = os.path.basename(self.input_file_path)
AttributeError: 'SceneFileWriter' object has no attribute 'input_file_path'
Press any key to continue . . .
我希望程序的输出是文本 "Hello World!" 的显示,但实际输出是 AttributeError: 'SceneFileWriter' object has no attribute 'input_file_path' 伴随着其余以上消息。
from big_ol_pile_of_manim_imports import *
class makeText(Scene):
def construct(self):
#######Code#######
#Making text
first_line = TextMobject("Manim is fun")
second_line = TextMobject("and useful")
final_line = TextMobject("Hope you like it too!", color=BLUE)
color_final_line = TextMobject("Hope you like it too!")
#Coloring
color_final_line.set_color_by_gradient(BLUE,PURPLE)
#Position text
second_line.next_to(first_line, DOWN)
#Showing text
self.wait(1)
self.play(Write(first_line), Write(second_line))
self.wait(1)
self.play(FadeOut(second_line), ReplacementTransform(first_line, final_line))
self.wait(1)
self.play(Transform(final_line, color_final_line))
self.wait(2)
你试过吗?
解决此问题的最佳方法是删除创建 scene1
对象的代码。要使此代码正常工作,需要 仅 实现场景的来源 class,并且您可以使用以下方式生成场景:
$ python -m manim -p /path/to/source.py GreetingScript
-p
标志表示渲染场景后打开视频。希望对您的问题有所帮助。