島根県安来市のフリーランスエンジニア_プログラマー画像1
PyInstallerでMoviePyをEXE化する際のエラー解決方法完全ガイド – Eatransform

PyInstallerでMoviePyをEXE化する際のエラー解決方法完全ガイド

PyInstallerでMoviePyアプリをEXE化する際の問題と解決方法

MoviePyを使用したPythonアプリケーションをPyInstallerでEXE化する際に遭遇した問題と、その解決方法を詳しく解説します。

Python MoviePy PyInstaller Windows

環境

  • Python: Anaconda3環境
  • OS: Windows
  • MoviePy: 2.2.1 → 1.0.3(ダウングレード)
  • NumPy: 2.3.5 → 1.26.4(ダウングレード)
  • PyInstaller: 最新版

発生した問題と解決方法

問題1: ModuleNotFoundError: No module named ‘moviepy.editor’

症状:
Traceback (most recent call last): File “oricon_video.py”, line 4, in <module> import moviepy.editor as mpy ModuleNotFoundError: No module named ‘moviepy.editor’
原因:
  • MoviePy 2.x系では内部構造が大幅に変更された
  • moviepy.editorモジュールが削除され、editor.pyファイル自体が存在しない
  • MoviePy 1.x系のコードとの互換性がない

確認方法:

# MoviePyフォルダの中身を確認 dir C:\Users\[ユーザー名]\anaconda3\Lib\site-packages\moviepy # editor.pyが存在するか確認 Test-Path C:\Users\[ユーザー名]\anaconda3\Lib\site-packages\moviepy\editor.py
解決方法:
# MoviePy 1.0.3にダウングレード pip uninstall -y moviepy pip install moviepy==1.0.3 # 確認 python -c “from moviepy.editor import VideoClip; print(‘OK’)”

問題2: ImportError: initialization failed(NumPy互換性問題)

症状:
ImportError: numpy.core.multiarray failed to import ImportError: initialization failed
原因:
  • NumPy 2.x系(2.3.5等)を使用していた
  • 多くのライブラリ(astropy、erfa等)がNumPy 1.x用にコンパイルされている
  • バイナリ互換性がなく、初期化に失敗する
解決方法:
# NumPy 1.x系にダウングレード pip install “numpy<2” # バージョン確認(1.26.4などが表示されればOK) python -c “import numpy; print(numpy.__version__)”

問題3: PackageNotFoundError: No package metadata was found for imageio

症状:
importlib.metadata.PackageNotFoundError: No package metadata was found for imageio
原因:
  • PyInstallerがパッケージのメタデータ(バージョン情報等)を含めていない
  • imageioやmoviepyが実行時にimportlib.metadataでバージョン確認を行おうとして失敗
解決方法:
# メタデータを明示的に含めてビルド pyinstaller –onedir –console ` –copy-metadata imageio ` –copy-metadata imageio-ffmpeg ` –copy-metadata moviepy ` –name “YourAppName” ` your_script.py

問題4: ダブルクリックで起動しない(作業ディレクトリ問題)

症状:
  • PowerShellから.\YourApp.exeで起動すると正常に動作
  • ダブルクリックすると起動しない、またはファイルが見つからないエラー
原因:
  • ダブルクリックで起動すると、作業ディレクトリがEXEの場所ではなく別の場所になる
  • 相対パスで画像やファイルを読み込んでいる場合、パスが通らない
解決方法:

Pythonスクリプトの冒頭(import文の直後)に以下を追加:

import os import sys # PyInstallerでパッケージされている場合、実行ファイルのディレクトリに移動 if getattr(sys, ‘frozen’, False): application_path = os.path.dirname(sys.executable) os.chdir(application_path)

最終的なビルドコマンド

すべての問題を解決した最終的なビルドコマンド:

# 古いビルドを削除 Remove-Item -Recurse -Force build, dist -ErrorAction SilentlyContinue # ビルド実行 pyinstaller –onedir –console ` –copy-metadata imageio ` –copy-metadata imageio-ffmpeg ` –copy-metadata moviepy ` –name “YourAppName” ` your_script.py

トラブルシューティング Tips

PyInstallerがMoviePyを検出できない場合

import文を明示的に記述する:

# ❌ ワイルドカードインポート(PyInstallerが検出できない) from moviepy.editor import * # ✅ 明示的なインポート(推奨) import moviepy.editor as mpy from moviepy.editor import VideoClip, TextClip, CompositeVideoClip, concatenate_videoclips

Anaconda環境での注意点

Anaconda環境では、PyInstallerが正しくパッケージを検出できないことがあります。その場合:

# パスを明示的に指定 pyinstaller –onedir –console ` –paths=”C:\Users\[ユーザー名]\anaconda3\Lib\site-packages” ` –copy-metadata imageio ` –copy-metadata moviepy ` –name “YourAppName” ` your_script.py

バッチファイルで起動テスト

EXE化後の動作確認には、batファイルを使うと便利:

@echo off cd /d “%~dp0” YourAppName.exe pause

エラーメッセージが表示されるので、問題の特定が容易になります。

まとめ

MoviePyアプリをPyInstallerでEXE化する際の主な問題:

  1. MoviePy 2.x系の構造変更 → MoviePy 1.0.3にダウングレード
  2. NumPy 2.x系の互換性問題 → NumPy 1.26.4にダウングレード
  3. メタデータの欠落–copy-metadata オプションを使用
  4. 作業ディレクトリの問題os.chdir()で修正

これらの対処により、安定して動作するEXEファイルを生成できます。

検証手順

  1. Python環境での動作確認
    python your_script.py
  2. 依存関係の確認
    pip list | Select-String “moviepy|numpy|imageio”
  3. EXE化
    pyinstaller –onedir –console ` –copy-metadata imageio ` –copy-metadata moviepy ` –name “YourAppName” ` your_script.py
  4. 動作テスト
    cd dist\YourAppName .\YourAppName.exe

この順序で確実に動作するEXEファイルを作成できます。

データ集計システム – 無料の業務データ管理・分析ツール | Eatransform

個人サイトに某大手上場企業から「プレスリリース掲載依頼」が届いた話。地道な更新が報われた瞬間