【windows】pyinstallerを用いてpythonから実行ファイル(.exe)を作成する(Anaconda環境)

Python

こんにちは、しらすです。

今回はwindows環境でpythonからexeファイルを作成する方法について説明します。以下の環境を前提に説明したいと思います。

  • Windows10
  • Anaconda 3.x
  • Python 3.6.5
  • pyinstaller 4.1

実行ファイル(.exe)を作成する手順

  1. 仮想環境を作成
  2. 作成した仮想環境をActivate
  3. プログラム実行に必要なライブラリを仮想環境にインストール
  4. pyinstallerを仮想環境にインストールする
  5. pyinstallerを実行する
  6. 作成した仮想環境を削除する

pyinstallerでexeを作成する

Anaconda promptから現在の仮想環境を確認

スタートメニューからAnaconda Promptやコマンドラインを立ち上げましょう。

以下のコマンドでまずは現在作成済みの環境を確認します。

conda info -e

すると以下のように、現在作成されている仮想環境とActiveになっている環境が確認できます

私の場合、3つの環境が入っており、「*」がついている「base」という環境がActivateされている状態です。

仮想環境を作成

以下のコマンドで仮想環境を作成します。(「env-x」となっている部分は任意の名前を設定してください)

conda create -n env-x

コマンドが走った後、以下のようになれば完了です。

もう一度、仮想環境の一覧を表示してみましょう。以下のように新しく追加した仮想環境が出来上がっていることがわかります。

作成した仮想環境をActivate

現在はbaseがアクティブ状態なので作成したenv-xをアクティベートしていきます。以下のコマンドを入力しましょう。(「env-x」の部分は自分が作成した環境名を入れてください)

activate env-x

もう一度、仮想環境の一覧を表示してみましょう。すると以下のように「*」が移動してenv-xがアクティベートされていることがわかります。

プログラム実行に必要なライブラリを仮想環境にインストール

作成した仮想環境は、最初は何もライブラリが入っていない状態です。プログラム実行に必要となる各種ライブラリをpip等でインストールしていきましょう。

conda install xxxx

pyinstallerを仮想環境にインストールする

pyinstallerも入っていない状態なのでこちらもインストールします。

conda install pyinstaller

pyinstallerを実行する

これでpyinstallerを実行する準備が完了しました。それではexe化したいpythonファイルを指定してexeを作っていきます。

pyinstaller Test.py --onefile

「–onefile」を入れると実行に関係するファイルを一つにまとめてexe化してくれます。配布時に便利なのでpyinstallerでexe化するときは必ず入れるようにしましょう。

実行すると、Test.pyがあるフォルダ内に以下のファイルが作成されます。distの中に目的のexeファイルが作成されています。これでexe化は完了です。

  • build
  • dist
  • Test.spec

作成した仮想環境を削除する

最後は不要になった仮想環境を削除して終了です。一度現在の環境をディアクティベートしてから環境を削除します。

conda deactivate
conda env remove -n env-x

まとめ

無事exe化することができました。しかし、気づいた方もいらっしゃるかもしれませんが、作成されたexeファイルのサイズが馬鹿でかい

pyinstallerでは環境に入っているライブラリをexe化する際に全てラップしてしまうとのこと。そのためexeファイルのサイズが異常な大きさになるそうです。

仮想環境に必要なライブラリだけを入れる今回の方法をとってもファイルサイズは大変大きくなってしまいました。

軽量なexeを作成するなら「cx_Freeze」などを使用するのがよさそうです。※私は試しましたが上手くいかず。。。。使用するライブラリなどによっては使えない??また次回じっくりと問題解決して使っていきたいと思います。

【Python】cx_Freezeで軽量なexeファイル化をする方法 | GOISBLOG
「Python」軽量なexeファイル化ができる「cx_Freeze」の使い方 「cx_Freeze」はexeファイルを軽量化し、ファイル起動時もサクサク動きます。 exeファイル化した後は「pyinstaller」のように1ファイルにまとめることはできません。 UPXなどを使って1ファイルにすることは可能です。

コメント