あれこれいじる

プログラミング、勉強してます

Windows+PyQt5+Python3で作ったプログラムをバイナリ化

PyQtのプログラムをバイナリ化する方法は色々あるみたいだけど、
あんまりPython3には対応していない模様。


対応してるのがこれ
cx_Freeze


そのためこれを導入するのだけど、いたって簡単というかWindows用には
バイナリファイルしかないので落としてきてインストールするだけ。


…なんだけど、バイナリ化するときにエラーが出る。


なんとバグらしい。
cx freeze - CX_Freeze for my python script -- Fix up module error? - Stack Overflow


だからこのサイトから、非公式のwheelを入れなきゃならない。
Python Extension Packages for Windows - Christoph Gohlke


wheelの入れ方は調べればいくつもでてくるので割愛。


wheelさえ入ればこっちのものである。
以下のコードをsetup.pyに記述。

import sys
from cx_Freeze import setup, Executable

base = None

if sys.platform == "win32":
    base = "Win32GUI"

setup(  name = "sample",
version = "1.0",
description = "converter",
executables = [Executable("test.py", base=base)])

※test.pyは任意のファイル名です


その後コマンドラインでこれを

python setup.py built


実行すればbuiltディレクトリが出来る。んでその中にexeファイルがあります。
一件落着。