2022年1月4日火曜日

1月 04, 2022

 ぷちハマりしたのでメモ。

会社でテレワークをする場合に、いろいろとめんどうな申請や作業があるので、それらの作業を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化したスクリプトの起動がだいぶ遅い気がするんだよね。

もう少し早くならないものか

Next
This is the most recent post.
前の投稿

0 コメント:

コメントを投稿