質問: 前にTkinterでドラッグアンドドロップの機能を使えるように必要なファイルをダウンロードしました。 Python3 Tkinter ドラッグアンドドロップ用のライブラリでエラーが起こる pyファイルでは実行できたのですが、exe化したら実行できませんでした。 1. noconsoleでexe化 (1) pyinstaller --noconsole --onefile dnd.py (2) dnd.exeをdnd.pyと同じ位置へ移動(多分意味ないとは思うが念のため) (3) 下図のエラー ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/6c5523ac3cdf3c0f1b1cc318d6ca47b5.png) 2. noconsoleなしでexe化 (1) pyinstaller --onefile dnd.py (2) dnd.exeをdnd.pyと同じ位置へ移動(多分意味ないとは思うが念のため) (3) 下図のエラー ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/33e4f8f6b0e160c765d93c090e6ba739.png) 実行ファイルにしても使用できるようにするにはどうすればいいでしょうか? main.specをいじってpyinstallerで再び実行ファイルにすればいいのでしょうか? また、今回のドラッグアンドドロップ機能に関しては、実行ファイルにしたときは特にライブラリをインストールしたりパスを通す必要はないでしょうか?
回答: 自分の環境 (python3.8/win10) では、pyinstaller に特に何も指定する必要が無く Drag and Drop の機能は動いてますが、ライブラリは別の場所からインストールしました。 ライブラリを自分でダウンロードして、プロジェクト下に配置する場合は、 必要なファイルを調べ、コマンドライン引数かspecファイルで含めるようにして、 実行するプログラムからも参照できるように構成する必要があります。 > > 実行ファイルにしても使用できるようにするにはどうすればいいでしょうか? > > main.specをいじってpyinstallerで再び実行ファイルにすればいいのでしょうか? > > 実行ファイルにしたときは特にライブラリをインストールしたりパスを通す必要はないでしょうか? > > > 何れについても、プロジェクトの構成次第なので、 問題を再現できる環境構築~実行ファイル作成迄の手順等の情報が必要です。 まずは、こちらからドラッグ&ドロップのライブラリのインストールを試してみてはどうでしょう。 ライブラリ内容は同じ(versionは異なるかもしれません)ですが、tkdndもパッケージ内に含まれていて、 READMEの末尾にpyinstaller について言及があります。 Github TkInterDnD2 pyinstaller > > If you want to use pyinstaller, you should use the hook-tkinterdnd2.py file included. Copy it in the base directory of your project, then: > > > ``` pyinstaller -F -w myproject/myproject.py --additional-hooks-dir=. ```