pyinstallerを使ったPythonのexe化(重くならない方法)

今回は、「pyinstaller」を使ってPythonをexe化して配布できるようにする方法について解説したいと思います。

Pythonをexe化することで、Pythonの環境を構築していない人でも使用できるようになるため、作成したプログラムを配布する際に役に立いちます。 

目次

1. 必要なライブラリのインストール

まずはPythonをexe化するために必要な「pyinstaller」というライブラリをインストールしていきましょう。anacondaプロンプト上で下記のコマンドを実行してインストールしましょう!

conda install pyinstaller

※ただし、ここではcondaでインストールしていますが、この方法だとexeが重くなるため、最終的には「exeを重くしない方法」で解説する方法でインストールすることをお勧めします。

exe化する準備はこれだけでOKです!

では次の章で簡単なプログラムをexe化してみましょう!

 

Pyinstallerでは、exe化の際にPyqt5を使用している場合があるため、もしエラーが出る場合は Pyqt5というライブラリもインストールしてください。  

2. Pythonのexe化

2.2. exe化の基本について

まず、Pyinstallerを使用したexe化の基本について解説していきます。

exe化する方法は、exe化したいプログラムがある場所で「pyinstaller」をインストールした環境を開き、pyinstaller –onefile プログラム名」というコマンドを実行することでexe化できます。

※onefile前の「–」の部分は、下のように「-」をスペースを空けずに2つ重ねてください。

pyinstaller --onefile プログラム名

 

では、実際に簡単なプログラムを作成してexe化してみましょう!

今回は、入力した数字の足し算を行う簡単なプログラムを作成し、exe化してみます。

# cal_sum.py
a = float(input("一つ目の数字:"))
b = float(input("二つ目の数字:"))
c = a+b
print("合計は「"+ str(c) +"」です。")
input()

これを実行すると2つの数字を聞かれ、その合計値が返されます。
(最後のinputは、合計値が返された後一時停止するために入れています。これが無いと、exe化して実行した際に、表示されて一瞬で消えてしまうので確認できなくなってしまいます。)

 

では先ほどのプログラムをexe化してみましょう。コマンドは、「pyinstaller –onefile cal_sum.py」です!

すると、下のように複数のフォルダやファイルが出来上がります。
この中の、「dist」というフォルダに作成されたexeが入っています!

 

では、実際にexeを起動してみましょう!すると、下の様にちゃんとexeのみで起動することが出来ました。
これで、Pythonの環境を構築していないPCでもPythonのプログラムを実行することが出来ます

 

2.2. コマンドの解説

ではここで、「pyinstaller」でよく使用されるコマンドについて解説していきます。

主なコマンドとしては、以下のものがよく使用されると思います。

  • –onefileプログラムを一つにまとめるためのコマンド。exe一つで起動させるには必須のコマンド
  • –noconsoleコマンドプロンプトを表示させないコマンド。表示させる必要が無い場合はつけると良い。
  • –icon=ファイル名:exe化した際のアイコンを指定するコマンド。ない場合はデフォルトのアイコンになる。

※アイコンの付け方については下の記事で詳しく解説していますので、そちらもご覧ください。

 

基本は「–onefile」でexeを一つにし、コマンドプロンプトが必要無いプログラムには「–noconsole」で表示を切るのが良いと思います。

ただし、今回作成したプログラムのようにコマンドプロンプト上で入力や出力が必要な場合は、「–noconsole」を付けてしまうとexeがうまく動かないので注意しましょう。

ではこの章のポイントのおさらいです。

  • 「pyinstaller –onefile プログラム名」でexe化
  • 作成されたexeは「dist」フォルダ内に保存される
  • 「–noconsole」を付けることでコマンドプロンプトを起動せずに実可能

3. exeを重くしない方法

anaconda環境で上記の方法によりexe化した際に、とてつもなくexeファイルが大きくなることがあります。それは、「pyinstaller」の仕様によるものなのですが、具体的には、condaでインストールしたpandas」をexe化するとファイルの容量が大きくなります

この章では、その症状を防ぐ方法について解説します。 

3.1. 必要な準備(仮想環境の構築)

まずは、「pyinstaller」用の新しい仮想環境を用意してください

仮想環境の作り方については、「Pythonの仮想環境利用のすすめ(Anaconda環境)」で解説していますので、そちらを確認してください。

今回は「pyin」という仮想環境を作成しました。

そして、新しく作成した環境では、ライブラリをすべてpipでインストールしてください!

pipとcondaは混ぜるとエラーを起こすことがあるため、pipのみでライブラリをインストールした環境を作成するする必要があります。

 

pipで環境を作成するために、仮想環境を作成したのちにpipのみcondaでインストールしてからライブラリのインストールを行ってください。

具体的には、コマンドプロンプト上で以下のコマンドを順番に実行します。

! 仮想環境の作成
conda create -n pyin
! 仮想環境の起動
activate pyin
! pipのインストール
conda install pip

 

後は、必要なライブラリをpipでインストールすれば準備は完了です! 

3.2. exe化と重くなる理由について

では、実際にpipで作成した環境で「pyinstaller」を使ってexe化してみましょう。この章の冒頭で述べた通り、 condaでインストールしたpandas」をexe化するとファイルの容量が大きくなります。 そこで、「pandas」を使用しているプログラムを作成してexe両方の環境でexe化し、容量を比較してみましょう。

! use_pandas.py
import pandas as pd
df = pd.DataFrame([[1,2,3],[5,6,7]])
print(df)
input()

これをcondaとpipの環境それぞれでexe化すると、下のようにファイル容量が5倍以上変わります。(condaの環境で作ったexeファイルが重すぎます…)

このように、「pyinstaller」は「pip」で作成した環境でexe化することでファイル容量を小さくできるため、pyinstaller用の仮想環境を作っておくことをお勧めします!

 

  • 「pyinstaller」では、「condaでインストールしたpandas」をexe化するとファイルの容量が大きくなる
  • 「pyinstaller」では、「pip」で作成した環境でexe化することでファイル容量を小さくできる
  • pipのみでライブラリをインストールした仮想環境を作成することで解決できる

4. 終わりに

今回は、「pyinstaller」を用いたPythonプログラムのexe化について解説しました。Pythonプログラムは、exe化することでPythonの環境を構築していないPCでも起動することが出来るため、作成したプログラムをPythonを知らない人に共有する際にとても便利です。

作成したプログラムを共有したい場合は、ぜひ今回の方法を使用してみてください。 

もっと詳しくPythonについて学びたい方は、本サイトお勧めのプログラミングスクールである「侍テラコヤ」を利用してみるのも良いと思います。

詳しくは下記の記事で解説していますので、良ければそちらもご覧ください。

また、このサイトでは初心者の方向けに「プログラミングのお勧め学習法」も紹介していますので、気になった方はそちらもご覧いただけると幸いです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

このブログを運営している人

非エンジニア職の社会人です。
業務の単純作業が苦手で、何とかしたいと思いプログラミングを習得しました。
このサイトが同じ悩みを抱える人の助けになれば良いなと考えています。

コメント

コメントする

目次