Windows10でpython+Tkで書いたツールをexe形式にしたいとき、pyinstallerを選択しました。で、結構躓いたので後学のために注意点をまとめます。
Pythonのバージョン
一番大事なことです。
まず私が試したのはPython Releases for Windows | Python.orgのPython 3.7.0b5 - 2018-05-30です。これで
pyinstaller -F -w xxx.py
とかすると、確かにexeは作られるんですが実行しようとしても何も起きません。おそらく裏でコケてエラー吐いてると思います。
pyinstallerはまだpython3.7をサポートしていない可能性大です。
-->python3.6.5でやり直したところうまくいきました。
3.6が大丈夫というのは
PyInstallerがPython3.6をサポートしてくれた
で確認しました。
インポートファイル
ファイルが複数に分かれていて依存関係がある場合、それらも含めてビルドしないと失敗します。
--paths="`ここに含めたいパス"をつけてpyinstaller実行しましょう。
ex) pyinstaller -F -w xxx.py --paths="./modules"
※xxx.pyでエントリポイントのあるファイルを、--pathsでそこからimportしているファイルのあるディレクトリをすべて指定すること。
アラートがいっぱい出る
7477 WARNING: lib not found: api-ms-win-crt-stdio-l1-1-0.dll dependency of c:\users\~~~~\appdata\local\programs\python\python36\DLLs\_ssl.pyd
7547 WARNING: lib not found: api-ms-win-crt-runtime-l1-1-0.dll dependency of
c:\users\~~~~\appdata\local\programs\python\python36\DLLs\_ssl.pyd
7625 WARNING: lib not found: api-ms-win-crt-heap-l1-1-0.dll dependency of c:\users\~~~~\appdata\local\programs\python\python36\DLLs\_ssl.pyd
7703 WARNING: lib not found: api-ms-win-crt-time-l1-1-0.dll dependency of c:\users\~~~~\appdata\local\programs\python\python36\DLLs\_ssl.pyd
...
上記メッセージだけではなんのことやら...といった感じですが、この辺の投稿によればWindows 10に起因する問題の模様です。更に、Windows Vista/7/8ではwarningを抑えるためのdll(つまりwin10で足りない部品)があるとのこと。
しかしgithubの同スレの上部の投稿にある通り、warningが出ていても動作するexeファイル作成自体はできるようで、私もたくさんのエラーが吐かれているにもかかわらず、正常動作するexeファイル作成には成功しています。
どうしてもwarningを消したい、という場合は先程のcodewarrior0氏の言う
so the only thing to do is to install the VC 2015 runtime on the Vista/7/8 machine.
をやれば良いと思います。そこから先は軽く読んだもののこれといった対処法は書かれてないです(私は試していないので↑で出来る!とは断言は出来ませんが...)。
他に何某かのエラーが出てexeが作れない、となったら再び上記warningを疑えば良いのかなと...