LoginSignup
1
0

More than 1 year has passed since last update.

moviepyを使ったプログラムを実行ファイル化する際の注意点

Posted at

何も考えずに実行ファイル化してみる

main.py
import sys
from moviepy.editor import *


if 2 <= len(sys.argv):
    videos = [VideoFileClip(path) for path in sys.argv[1:]]
    clip = concatenate_videoclips(videos)
    clip.write_videofile("video.mp4")

ただの動画連結プログラムです
もちろんちゃんと動きます
これを何も考えずに実行ファイルにしてみる

$ pyinstaller --onefile -n program main.py

多分実行ファイルの生成には成功します

だかしかし

生成した実行ファイルを実行するとこんなエラーが

(前略)

AttributeError: module 'moviepy.audio.fx.all' has no attribute 'audio_fadein'

さてどうする

moviepy.editorなんてインポートしてはいけません
使いたいクラスや関数は全部個別にインポートしましょう

import sys
from moviepy.video.io.VideoFileClip import VideoFileClip
from moviepy.video.compositing.concatenate import concatenate_videoclips


if 2 <= len(sys.argv):
    videos = [VideoFileClip(path) for path in sys.argv[1:]]
    clip = concatenate_videoclips(videos)
    clip.write_videofile("video.mp4")

これなら実行ファイル化してもさっきみたいなエラーメッセージは出ません

関数及びクラスの場所は多分ここに全部書いてあります
https://github.com/Zulko/moviepy/blob/master/moviepy/__init__.py

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0