at backyard

Color my life with the chaos of trouble.

cx_Freezeを用いてWindows用のexeを作成する

cx_Freezeを用いてWindows用のexeを作成した際の備忘録を書き残しておく。

実行したPython環境

Windows用のAnaconda経由でコマンドプロンプトを立ち上げて作業をしている。

Windows用のexeを作成する方法

下記のコマンドで作成可能。

python setup.py build

なお、作成後のexeだが、.dllファイルや lib フォルダなどが同じフォルダ内に生成されるが、それらはそのままそこにおいておく必要がある。
(つまりシングルバイナリではない)

Widnows用のexeでエラーが発生したので対応した

最初、作成したWindows用のexeを実行したら下記のようなエラーが出た。

TypeError: add_docstring() argument 2 must be str, not None

エラーメッセージでググってみたが、numpyのページが一番上に出てきた。

github.com

他にこれといった心当たりもなかったので excludes に追加したところ、無事にエラーが解消でき、exeから起動ができた。
似たような事象はググっても出てこなかったが、Pythonのversionや環境などにもよるのだろうか?

なお他にも下記の記事を参考にいくつかの不要なライブラリを追加している。

hitoribucho.com

[余談] cx_FreezeでMac用の実行ファイルを作る方法

Macで作成する方法については環境構築を含め、一通りこちらにまとめている。

shinshin86.hateblo.jp

cx_Freezeでクロスコンパイルは可能か?

ちなみにcx_Freezeではクロスコンパイルには現時点では対応していない。

つまりWindowsマシンでなければWindows用のバイナリは作れないし、MacマシンでなければMac用のバイナリは作れない。
(またMacについてはM1(Apple Silicon)でビルドしたバイナリはM1(Apple Silicon)でしか動作しないし、intelチップについても同様となる。)