何も考えずに実行ファイル化してみる
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