超初心者向けPython入門講座

仕事の効率化などにpythonを使いたい!けど何から始めらばよいか分からない、といった初心者の方向けに、pythonの導入から実用的な使い方まで、極力分かりやすくまとめたサイトです。

pyinstaller python

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がうまく動かないので注意しましょう。

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

Point
  • 「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用の仮想環境を作っておくことをお勧めします!

 

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

 

 

4. 終わりに

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

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

 

また、このサイトでは初心者の方向けに「Python初心者入門講座」という講座を作っていますので、気になった方はそちらもご覧いただけると幸いです。

スポンサーリンク




スポンサーリンク




-pyinstaller, python
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Spyderの基本と便利な使い方(Python初心者)

Pythonでプログラムを書く際に、エディタに何を使うかは好みが分かれますが、初心者の方には「Spyder」を使うことをお勧めしています。 理由としては、 AnacondaでPythonをインストール …

仮想環境でのSpyder利用法と実行場所

Pythonの仮想環境で「Spyder」を使うには、注意点があります。ここでは、仮想環境でのSpyderの使い方について解説したいと思います。 また、あわせて仮想環境を任意の場所で起動する方法について …

第6章 Pythonで計算してみよう

この章では、Pythonを使って「計算」を行っていこうと思います。皆さんがイメージしている通り、「1 + 1 = 2」みたいなものを、プログラミング上でやってみよう!というものです。 「計算」ができる …

Pythonでcsvの読み込み(numpy,pandas対応)

Pythonでデータを扱う際に、データをcsvから読み込むことは多いと思います。 ただし、その方法はいくつかあり、最初はどれを使えばいいか迷うと思います。 そこで、今回はcsvファイルの読み込みについ …

Pandasの基本(dataframe作成、データ抽出、csv読み込み等)

今回は、Pyhonでデータを扱う際に使えるととても便利な「Pandas」について解説したいと思います。 また、データを扱う際に使用する代表的なライブラリとして「numpy」がありますが、2つのライブラ …

スポンサーリンク





初めまして、サイトを運営しているキユと申します。

このサイトでは、まったくの初心者がPythonを使って、単純作業や仕事を効率化できるようになるまでに必要なことをまとめています。