23
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Pyinstaller】+【venv】 簡単に軽量な .exeをつくる手順

Last updated at Posted at 2021-11-10

はじめに

pyinstallerを使ってpyファイルのexe化をすると,exeファイルが重たくなってしまうことがある.本記事では,venv(仮想環境用Python標準モジュール) を使った手軽にできるexeファイル軽量化の方法を一つ紹介する.他に簡単な軽量化手段が見つかればその都度更新しようと思う.

環境

  • OS: Windows 10
  • Python 3.9.5
  • Pyinstaller 4.6
  • pip 21.3.1

venv(仮想環境)を使う

適当な場所にプロジェクトフォルダMyProjectをつくった後, 以下のようにしてカレントディレクトリを移動させる.

コマンドプロンプト
c:\Users\user> cd Desktop\MyProject

この場所に仮想Python環境をつくる.(一般的に.venvとすることが多い)

コマンドプロンプト
c:\Users\user\Desktop\MyProject> python -m venv .venv

MyProject直下に.venvが作られ,以下のようなフォルダ構造となる.

MyProject
 └─.venv
     ├─Include
     ├─Lib
     └─Scripts

ここでactivateすることで,仮想環境に入ることができる.

コマンドプロンプト
c:\Users\user\Desktop\MyProject .venv\Scripts\activate

そうすると以下のような表示に変わる.

コマンドプロンプト
(.venv) C:\Users\user\Desktop\MyProject>

この状態でpip listすればインストール済みライブラリがまっさらなのがわかる.

ライブラリのインストール

venvを使うことで必要最低限のライブラリのみexeファイルに取り込むことができる.pyinstaller及びexe化したいpyファイル(例えばapp.py)内でimportしたライブラリをこの仮想環境内にインストールする.

コマンドプロンプト
(.venv) C:\Users\user\Desktop\MyProject> pip install pyinstaller
(.venv) C:\Users\user\Desktop\MyProject> pip install numpy
   ︙

   ︙

venvを使わなかった場合,PCのpipで管理するライブラリがすべてexeに取り込まれる.

pyinstallerの実行

以下のフォルダ構造になるようにapp.pyを配置する.

MyProject
 └─.venv
 |   ├─Include
 |   ├─Lib
 |   └─Scripts
 └─ src
     └─app.py

以下のコマンドでexeファイルが出来上がる.-Fでexeファイルを一つにまとめ,-wでexe起動時のコンソール起動をなくす.

コマンドプロンプト
(.venv) C:\Users\user\Desktop\MyProject> pyinstaller -F -w src\app.py

仮想環境から出る

deactivateで仮想環境から出ることができる.出るときは入るときのように,.venv\Scripts\deactivateとする必要はない.

コマンドプロンプト
(.venv) C:\Users\user\Desktop\MyProject> deactivate
C:\Users\user\Desktop\MyProject> 

参考文献

venvを詳しく知りたい方は,以下が参考になると思う.特に2つ目は,1つ目(公式ドキュメント)よりわかりやすくまとまっていると思う.

追記履歴

2022-07-30:フォルダ構造を訂正した.pipコマンドなどを使わずに仮想環境フォルダ.venvを直接書き換えるべきではない.今回参考にしたPython Virtual Environments: A Primerを参考文献に加えた.
2022-08-22:ライブラリのインストールにおいて,「venvを使わなかった場合,ローカルのpipで管理するライブラリがすべてexeに取り込まれる. 」が不適切だった.ローカルからPCとした.どちらかといえば,仮想環境がローカルで,そうでない場合がグローバルと言えるかもしれない.

23
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?