Как я могу исправить AttributeError в программе Manim Hello World? - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь написать программу Hello World на Manim.

Я установил Manim и его необходимые программы и могу запустить пример кода из командной строки, как и предполагалось.Этот пример кода работает необычным образом;пользователь запускает команду, указывающую не только файл .py, но и отдельный класс внутри него, и Python выполняет код определения класса, по-видимому, без создания экземпляра класса.

Теперь я пытаюсь написать автономный код.py файл, который работает путем создания экземпляра класса при запуске (я запускаю его в Visual Studio Community 2019), а не требую внешних команд.

Я проверил многие из похожих вопросов, но, к сожалению, все онио программах Hello World в целом, даже охватывающих многие языки, отличные от Python.

Я обнаружил несколько ошибок AttributeError: у объекта '____' нет атрибута '____' при поиске, включая это полезное объяснение (https://stackoverflow.com/a/8696339/2364796), но ничего, что, кажется, не применимо к коду, который я явно написал.

Я также проверил в 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' нет атрибута 'input_file_path', сопровождаемого остальной частью вышеприведенного сообщения.

1 Ответ

0 голосов
/ 13 июня 2019
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)

ты что-то пробовал?

...