【Python】PyInstallerの警告に対する対処方法について
環境
発生した環境は以下。
発生事象
上記環境にて、pyxelpackagerでアプリケーションの単体実行ファイル生成時、以下警告が発生。
単体実行ファイルが作成されない。
12467 WARNING: Tcl modules directory /usr/share/tcltk/tcl8.6/../tcl8 does not exist.
原因
pyxelpackagerでは、引数(アセット、実行ファイル)を作成する処理のみを行い、PyInstallerに渡す。
単体実行ファイルを作成する処理はPyInstallerにて行われるが、このPyInstallerでのパスの指定がおかしい。
(tcl8ディレクトリはtcl8.6の下に存在しているが、その上の階層を参照しようとしている)
対処
~/.local/lib/python3.8/site-packages/PyInstaller/hooks/hook-_tkinter.py の 206行目に余計な引数が指定されているのを削除。
(修正前)
206 modules_path = os.path.join(tcl_root, "..", modules_dirname)
(修正後)
206 modules_path = os.path.join(tcl_root, modules_dirname)
その後、pyxelpackagerを実行すると、単体実行ファイルが作成された。
補足
venvで仮想環境を作成している場合、修正対象ファイル(hook-_tkinter.py)は以下に配置される。
./lib/python3.8/site-packages/PyInstaller/hooks/hook-_tkinter.py
なお、Macは手元に環境が無いため未確認だが、恐らく同様の原因だと思われる。