cx_Freeze
cx_Freeze is a set of scripts and modules for freezing Python scripts into executables in much the same way that py2exe and py2app do.
freezing
という表現がミソなのですが、成果物は**python処理系
+ユーザーコード(.py)+モジュール(DLLなどネイティブ実装部分含む)をひとまとめに凍結したものです。
で、それがexecutables
という意味は、python
コード(モジュール含む)をネイティブコードに変換したものではなく
凍結したものを解凍してpythonコードとして自動実行するものといえます。
そして具体的な凍結**手段としてzip
などの圧縮技術を利用しています。
よって、本質的にはpython
インストールされた環境でpython
コードを実行する処理と違いはありません。また、.pyc
ファイルと、上記でできる実行形式ファイルは別ものです。
ちなみにこの手のツールのメリット(目的)としては以下が挙げられます。
- ユーザーがpython処理系をインストールする手間を省く。
- コード毎に実行環境(モジュールなどの依存関係)を分離する。
以上を踏まえて回答すると
「cx_freezeで生成したやつはターゲートマシンのマシンコードであり、マシンコードに依存します。」
「*.pycは中間コード(バイトコード)で, どんなマシン上でも実行できます。」
と考えて宜しいでしょうか。
いいえ。ただ.py
そのままではなく.pyc
(pythonバイトコード)に変換して凍結程度はおこなっていると思います。
ただ、*.pycを実行するにはターゲートマシンにPython環境のインストールする必要に対して、
cx_freezeで生成したやつを利用する場合、ターゲートマシンにPython環境のインストールは要らない。
これも正しいでしょうか。
「Python環境のインストールは要らない」という意味では正しいです。
cx_freezeで生成したやつは最終コードなので、オリジナル .py に勿論、.pyc よりも実行速度が速い?!
いいえ。
参考:Freezing Your Code
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/16 13:38
2018/01/16 13:46
2018/01/16 14:28
2018/01/19 04:49