ぷちハマりしたのでメモ。
会社でテレワークをする場合に、いろいろとめんどうな申請や作業があるので、それらの作業をPythonで自動化した。(申請書出したり、outlookのスケジュールに登録したり)
自動化のスクリプトを作るのはわけなかったのだけど、exe化してまとめておこうとおもったら失敗した。
正確には、exe化はできるのだけど、実行すると以下のようなエラーが発生する。
Traceback (most recent call last):
File "gui.py", line 27, in <module>
File "tkcalendar\dateentry.py", line 128, in __init__
File "tkcalendar\calendar_.py", line 258, in __init__
File "babel\dates.py", line 329, in get_day_names
File "babel\core.py", line 641, in days
File "babel\core.py", line 364, in _data
File "babel\localedata.py", line 141, in load
File "babel\localedata.py", line 141, in load
File "babel\localedata.py", line 147, in load
ModuleNotFoundError: No module named 'babel.numbers'
[3160] Failed to execute script 'gui' due to unhandled exception!
※gui.pyは、自分が作ったpythonファイル。
モジュールがないとか言われているが、通常はpyinstallerで依存関係のファイルを勝手に集めてきてくれるみたいだから、モジュールがないってどうゆう状況だろうと思ったが、怒られているtkcalendarのドキュメントを見ていたら、思いっきり書いてあった(笑)
公式ドキュメント⇒HowTos
どうやら、pyinstallerでインストールする際にtkcalendar周りの依存関係を上手く解決してくれない様子。
解決方法が乗ってたので、それで一発で解決した。
$ pyinstaller --hidden-import babel.numbers myscript.py
最終的に自分が実行したコマンドがこれ
pyinstaller --hidden-import babel.numbers ./gui.py --name AutoTelework.exe --onefile --noconsole --add-binary "./lib/chromedriver.exe;./driver"
ちょっと関係ないけど、exe化したスクリプトの起動がだいぶ遅い気がするんだよね。
もう少し早くならないものか
0 コメント:
コメントを投稿