Как добавить новый метод в существующий импорт в Python? В частности фильм - PullRequest
0 голосов
/ 29 мая 2019

По какой-то причине Python не позволяет мне получить доступ к пользовательскому методу, который я создал в файле preview.py moviepy. Я просто хочу знать, как правильно внедрить это в файл. Для справки, прежде чем я изменил название метода, он работал правильно.

Я проверил как минимум два файла __init.py__, и они были фактически пусты. Я не мог найти, где методы инициализируются где-то, и это, вероятно, то, что я пропускаю.

Я также попытался перезапустить Git Bash, но это тоже не сработало (другое решение, которое я видел).

Оригинал:

@convert_masks_to_RGB
def preview(clip, fps=15, audio=True, audio_fps=22050, audio_buffersize=3000,
            audio_nbytes=2, fullscreen=False):

Изменено:

@requires_duration
@convert_masks_to_RGB
def preview_custom(clip, marker_overlay="marker_overlay.png", fps=15, audio=True, audio_fps=22050, audio_buffersize=3000,
            audio_nbytes=2, fullscreen=False):

Существует более чем несколько различий между измененным и оригинальным методом, однако в настоящий момент я ожидаю единственного результата - правильно вызвать метод. Ошибка ниже:

Traceback (most recent call last):
  File "T3AJM.py", line 249, in <module>
    main()
  File "T3AJM.py", line 34, in main
    GUI_main_menu()
  File "T3AJM.py", line 85, in GUI_main_menu
    GUI_play_markers()
  File "T3AJM.py", line 125, in GUI_play_markers
    video.preview_custom(marker_overlay=TEMP_OVERLAY_FILE)
AttributeError: 'VideoFileClip' object has no attribute 'preview_custom'

Спасибо, что уделили время.

1 Ответ

0 голосов
/ 30 мая 2019

Я даже не уверен, что это технически решает проблему, но просто делаю:

from moviepy.video.io.preview import *

и

preview_custom(video, marker_overlay=TEMP_OVERLAY_FILE)

исправил проблему. Я понятия не имею, почему мне пришлось изменить способ его вызова, например, сделать clip.preview () или, в этом случае, video.preview () раньше работал отлично, но неважно.

...