mieki256's diary



2020/03/16(月) [n年前の日記]

#1 [python] cx_FreezeでPythonスクリプトをexe化したけど厳しい

PySide2 を使った Pythonスクリプトを、cx_Freeze を利用することで exe化してみたけれど、これがなかなか厳しい。簡単な Helloworld 程度のスクリプトですら、exe化すると、必要なファイル群が全部で345MBぐらいになる…。

環境は Windows10 x64 1909 + Python 3.7.7 64bit + PySide2 5.14.1 + cx_Freeze 6.1。

cx_Freezeでexe化。 :

cx_Freeze に渡した setup.py は以下。
import sys
from cx_Freeze import setup, Executable

script_name = "01_qtquick_load_qrc_py.py"
app_name = "01_qtquick_load_qrc_py"
ver_name = "0.1"
desc = "converter"

# packages = []
# includes = ["PySide2.QtCore", "PySide2.QtGui", "PySide2.QtQml"]
# excludes = []

base = None

# CUIなら以下のifをコメントアウト
if sys.platform == 'win32':
    base = 'Win32GUI'

exe = Executable(script=script_name, base=base)

setup(
    name=app_name,
    version=ver_name,
    description=desc,
    # options={
    #     "build_exe": {
    #         "includes": includes,
    #         "excludes": excludes,
    #         "packages": packages
    #     }
    # },
    executables=[exe]
)

exe化は以下。
python setup.py build

buildというディレクトリが作成されて、exe.win-amd64-3.7/ 以下に .exe ができている。 exeの実行に必要なファイル群は、lib/ 以下にコピーされている。

仮想環境を作成して試してみた。 :

余計なモジュールがたくさん入っているのではないかと思えてきたので、試しに仮想環境を作って試してみたが、345MB が 344MB になった程度だった。効果がほとんどない…。そもそも、PySide2 のフォルダだけで、325MB もあるし…。

一応、仮想環境を利用する手順をメモ。

仮想環境の作成。
python -m venv myenv

仮想環境に切り替え。
.\myenv\Scripts\activate

Pythonのバージョンを確認。
python -VV

仮想環境の終了。
deactivate

仮想環境に必要なモジュールをインストール。仮想環境に切り替えて、pipをアップグレードしてから、必要なモジュールをインストールしていく。
.\myenv\Scripts\activate
python -m pip install -U pip
python -m pip install PySide2
python -m pip install cx_Freeze

以下を参考にして作業しました。ありがたや。

_venvによるPythonの仮想環境構築(Windows) - Qiita

cx_Freezeに渡すオプションを変える。 :

cx_Freeze はバージョンが上がるたびに、「せっかく作ったexeが動かないのでは意味が無い」的に、かき集めてくるファイルを増やすような実装になっていったらしいのだけど。以前と同様の動作をさせるオプションとして、zip_include_packages なるオプションが用意されているようで。

_cx_Freeze 5.0.1 and PyQt - freezing copied too many files - Issue #256 - anthony-tuininga/cx_Freeze

試しに指定してみたのだけど…。180MBぐらいまでサイズが減ったものの、「Qtがちゃんとインストールされてないから動かないよ」と文句を言って終わってしまうexeが出来上がってしまった…。これでは意味が無い…。

以上、1 日分です。

過去ログ表示

Prev - 2020/03 - Next
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project