nuitkaを使ったpythonの軽量exeファイルの作り方
初めに
pythonをexeファイルにしたいと思ったので 軽量なexeファイルを作れる「nuitka」の使い方を説明します。あくまで、私がうまくいったやり方を備忘録的にまとめています。
仮想環境の構築
pythonの仮想環境を作ってない方は「pipenv」をコマンドプロンプトなりpowershellなりでインストールしてください。
pip install pipenv
cdコマンドで任意のディレクトリに移動した後に仮想環境を構築します。
pythonのバージョンを指定しています。
pipenv --python 3.8
次に必要なモジュールをインストールします。
pipenv install numpy
モジュールのバージョンを指定する場合は以下のようにしてください。
pipenv install numpy == ○.○.○○
MEMO
- 仮想環境のアドレス
pipenv --venv
- 仮想環境の削除
pipenv --rm
「nuitka」の導入
「nuitka」「zstandard」モジュールをインストールします。複数のモジュールを同時にインストール可能です。
pipenv install nuitka zstandard
仮想環境の有効化
以下のコマンドで「nuitka」を実行する前に仮想環境を有効化します。
pipenv shell
仮想環境を終了する場合は以下のコマンドを利用します。
exit
「nuitka」の実行
「nuitka」を以下のコマンドで実行します。
nuitka --mingw64 --follow-imports --onefile ○○.py
「--mingw64」はpythonが64bitである必要があります。
「--onefile」は単一の実行ファイル化するオプションです。zstandardモジュールによってコードを圧縮します。
C言語コンパイラがない場合は実行中にインストールするか聞かれます。 そのままインストールしてください。
Nuitka-Scons:INFO: Backend linking program ( no progress information available)
実行中に上のような表示で止まります。辛抱強く待ってください。
「Pyinstaller」で60MB程度のプログラムだと20min程度かかります。
MEMO
- GUIなどを使っている場合にコンソールの表示を消すオプション
--windows-disable-console
- プラグインを有効にするオプション
--plugin-enable=○○○
EXEファイルの実行
無事に起動出来ればいいですが、うまくいかないことが多いです。エラー文の確認をした後に、問題がありそうなモジュールのバージョンを下げたり、プラグインを有効にしましょう。ちなみにnumpyはプラグインを有効にしたらうまくいきました。実行できないモジュールがある場合にはそれだけ省く事も可能です。
- モジュールを省くオプション
--nofollow-import-to=○○○