仮想環境でPythonのプログラムをEXE化する方法

Pythonで作ったプログラムをPython環境構築されてないWindowsパソコンでも動かせるようにEXE化(.exeファイル)するには、まず自分のパソコン内に、仮想環境と呼ばれる他のプログラムに影響されない独立した場所を構築し、その仮想環境の中でEXE化する必要があります。本記事では、一連の作業手順を記載します。

EXE化とは、プログラムやスクリプトを「.exe」ファイルと呼ばれる、Windows上で直接実行できる形式のファイル(executable file)に変換することです。通常PythonやJavaなどで作られたプログラムは、動作させるソフトウエアが入ったPCでないと開くことができませんが、EXE化することにより、環境構築されてないユーザーのPCでもプログラムを実行することができます。

作業フォルダー作りコマンドプロンプトのショートカットを配置

Pythonのソースコードがあるフォルダー内に、コマンドプロンプトのショートカットをコピペする。

※下画像は「pythondev」というフォルダー内にコマンドプロンプトのショートカットをコピペしてますが、Pythonのプログラムがあるフォルダーは、読者様それぞれ異なります。

「pythondev」というフォルダー内にコマンドプロンプトのショートカットをコピペ
「pythondev」というフォルダー内にコマンドプロンプトのショートカットをコピペ

コマンドプロンプトの設定変更

コピペしたコマンドプロンプトのショートカットを右クリックしてプロパティを開き作業フォルダ(S)に、%CD% というコマンドを入力する。これによりコマンドプロンプトは、ショートカットを実行した場所を作業フォルダとして動くようになります。

%CD% コマンドは、Current Directoryの略です。

コマンドプロンプトのプロパティ
コマンドプロンプトのプロパティ

コマンドプロンプトの起動

コマンドプロンプトを起動させる。

※下の画像は、「pythondev」というフォルダーにコマンドプロンプトのショートカットをコピペして起動させたものです。

コマンドプロンプトの起動状態
コマンドプロンプトの起動状態

パソコンに仮想環境構築する。

コマンドプロンプトに以下コマンドを入力し実行(ENTER KEYを押す)します。

python -m venv ●●●●

するとフォルダー内に仮想環境が生成されます。ちなみに【python -m venv ●●●●】の” ●●●●”は、EXE化したいPythonのプログラム名(スクリプト名)を入力します。下の画像では【python -m venv myenv】となっておりますが、読者様それぞれ異なります。

【python -m venv myenv】を入力した状態
【python -m venv myenv】を入力した状態
作成された仮想環境フォルダー
作成された仮想環境フォルダー

※「venv」とは、Pythonの標準モジュールのことで仮想環境を作成させる呪文のようなものです。尚、【python -m venv xxxx】の” xxxx”は、Pythonのスクリプトの名前を入れます。本ブログでは、【python -m venv myenv】としました。

※「仮想環境」とは、パソコンの中に作られる干渉されない独立した場所のようなイメージです。

コマンドプロンプト上で仮想環境を起動させる

コマンドプロンプトに以下コマンドを入力し生成した仮想環境を起動させます。

●●●●\Scripts\activate

“●●●●” は、仮想環境のフォルダー名を入力します。本記事では “myenv” とした為【myenv\Scripts\activate】と入力しております。このコマンドを実行すると仮想環境が起動します。

【myenv\Scripts\activate】と入力した状態
【myenv\Scripts\activate】と入力した状態

仮想環境が起動するとコマンドプロンプトの左側に仮想環境のフォルダー名が表示が出ます。

仮想環境が起動した状態
仮想環境が起動した状態

※毎回打ち込む事が面倒であればバッチファイルにして処理しても良いです。

ライブラリーインストール用の指示書を作成

仮想環境でPythonなどのプログラムを動かすためには、ライブラリーと呼ばれるアプリケーションをインストールする必要があります。コマンドプロンプトに以下コマンドを入力し、実行すると仮想環境のフォルダー内にrequirements.txtというテキストが自動的に生成されます。

pip freeze > requirements.txt

requirements.txtを開き、必要なライブラリをすべて requirements.txt ファイルに追記します。本記事では【pyinstaller】というライブラリーを使用してEXE化するので【pyinstaller】を記載しております。

PyPDF2とpyinstallerという2種類のライブラリーを入力
PyPDF2とpyinstallerという2種類のライブラリーを入力

指示書に記載したライブラリーを仮想環境にインストール

コマンドプロンプトに以下コマンドを入力し実行します。

pip install -r requirements.txt

以下コマンドを入力し仮想環境に必要なライブラリーがインストールされたか確認します。

pip list
【pip list】でPythonプログラム(スクリプト)を起動させて問題なく動作するか確認

【pip list】でPythonプログラム(スクリプト)を起動させて問題なく動作するか確認

仮想環境上でPythonのプログラムのEXE化

コマンドプロンプトに以下コマンドを入力し実行させます。【your_script.py】 は、読者がEXE化したいPythonプログラム(スクリプト)名を拡張子含めて記入します。

pyinstaller --onefile your_script.py
【your_script.py】というPythonプログラムをEXE化するコマンド
【your_script.py】というPythonプログラムをEXE化するコマンド

EXE化する他コマンド                                                      ①【pyinstaller –noconsole your_script.py】:通常EXE化したPythonプログラムは、起動時コンソールウィンドウが同時に立ち上がり目障りですが、このコマンドを使うとコンソールウィンドウを表示せずに、GUIアプリケーションとして動作させることができます。※your_script.pyは任意の名前です。     

②【pyinstaller –onefile –icon=your_icon.ico your_script.py】:EXEファイルのアイコンを指定する。EXEファイルにカスタムアイコンを設定できます(.ico形式のアイコンファイルが必要です)。※your_icon.icoは任意の名前です。 もし、ノンコンソール(立ち上げ画面無)でやるなら【pyinstaller –onefile –noconsole –icon=your_icon.ico –upx-dir .\upx –optimize 2 your_script.py】,もしEXCELファイルなども一緒に合成するなら【pyinstaller –onefile –noconsole –icon=your_icon.ico –upx-dir .\upx –optimize 2 your_script.py  –add-data “●●●.xlsx;.”】とします。                      

pyinstaller --noconsole your_script.py
pyinstaller --onefile --icon=your_icon.ico your_script.py
pyinstaller --onefile --noconsole --icon=your_icon.ico --upx-dir .\upx --optimize 2 your_script.py
pyinstaller --onefile --noconsole --icon=your_icon.ico --upx-dir .\upx --optimize 2 your_script.py  --add-data "●●●.xlsx;."

UPXの使い方

UPXというプログラムを使うと更に圧縮されたEXEファイルを生成できます。ただし起動に時間がかかる場合があり一長一短です。読者ご自身で試しながら判断して下さい。

  1. UPXを【github】のサイトからダウンロードし、zipを展開する。 https://github.com/upx/
  2. 展開したフォルダ名をupxに変えて、仮想環境を作った場所(例:C:\Documents\pydev)にコピぺする。
  3. 仮想環境を有効にした状態で、ソースファイルを置いた場所(例:C:\Documents\pydev)で下記を実行します。 >pyinstaller –onefile –upx-dir .\upx your_script.py 
□UPXあり、最適化なし 
pyinstaller --onefile --upx-dir .\upx your_script.py 
または
pyinstaller --clean  --onefile --upx-dir .\upx your_script.py   

□UPXあり、最適化あり
pyinstaller --onefile --upx-dir .\upx --optimize 2 your_script.py
pyinstaller --clean  --onefile --upx-dir .\upx --optimize 2 your_script.py

関連記事

コメント

この記事へのコメントはありません。

CAPTCHA