Pythonスクリプトをexeファイルにしようとした話
基本的に仕事中に、自動化ができそうな作業があると、必ずスクリプトなどを使って自動化または半自動化をするようにしている。 そして、同僚たちが使うことを想定し、できる限りワンクリックで実行可能な状態にするのが正解だと信じている。
そのため、windows環境の場合はできる限りbatファイルで作成する。 powershellはより便利ではあるが、セキュリティ上の制約があって、気軽には使えない。 (そのため、batファイルの中からpowershellスクリプトを呼び出すという方法を使う場合もある) そして、Linux環境上のツールが必要だった場合はbashのシェルスクリプトを使うようにしている。
そして、今回、aws関連のツールを作成したので、awsのsdkを使うために、pythonのスクリプトを作成することになった。 作成したはいいものの、問題が一つある。 これは僕一人が使うものではなく、今後他の人も使うことが想定されているものなので、できる限り簡単な使い方ができるようにしたい。 その場合、pythonスクリプトのままでpythonコマンドで実行するのは少し面倒だ。 だって依存性などもpipでインストールする必要があるし・・・
そこで思いついたのは、pyinstallerやnuitkaなどを使い、pythonスクリプトをexeファイルにして使わせればより簡単な使い方になるかな、と。 ここでpyinstallerには大きな問題があった。 過去の経験から、pyinstallerで作ったexeファイルは、実行されるまでとても長く待たされる、ということ。 これはおそらくだが、パソコンのセキュリティソフトがこのexeファイルを検査するのに時間がかかるのだと思われる。 問題は毎回実行するたびに時間がかかるので、何分もかかるので、使い物にはならないということ。
それで、nuitkaのような、pythonコードをC++コードに変換してコンパイルした場合はどうなのか気になったので挑戦してみた。
ここで発覚したnuitkaの難点。
- python 3.13バージョンにまだちゃんと対応できていない。
- C++のコンパイラが別途必要になる。
- クロスフラットフォームに対応しておらず、wsl上で作成するとLinux専用になってしまう。 など・・・
これじゃnuitkaも難しそう・・・。 明日もうちょい方法を探ってみよう。