Pythonで作成したプログラムを誰かに配布したい!ということがあると思います。そんな時、配布先で環境構築からしないと動かない、となったら時間がかかって不便です。
そこで「exe」化することで解決できることが挙げられます。
でも、Pythonのプログラムって簡単に「exe」化できるの?という疑問が出てくると思います。
結論から言うと簡単に作成できます。
ここでは、Windows環境での「pyinstaller」の使用方法について解説しています。
この記事の対象
「pyinstaller」とは
「pyinstaller」とはpythonで作成されたプログラムを簡単に「exe」化できる外部ライブラリです。
特徴
メリット | 「exe」化が簡単にできる。 |
デメリット | ファイルサイズが大きくなる傾向がある。また、起動時間が遅い。作成したOSでしか動作しない。 |
上記の特徴としてデメリットの方が目につきますが、それでも簡単に「exe」化できるのでおすすめです。
使用方法としては予めpipで「pyinstaller」をインストールしておく必要があります。
「pyinstaller」のインストール
Windows環境でのインストール方法としてpipでインストールできます。
$ pip install pyinstaller
後述していますが、「pyinstaller」のVersionによっては、対応していないPythonのVersionがあります。インストールしたものがどのVersionなのか調べておくと良いです。
pyinstaller --version
「pyinstaller」を用いた使用例
以下のプログラムをexe化します。内容としては「.png」拡張子のファイル名を連番にするというものになります。
プログラムの詳細についてはこちらを参照下さい。
import os
import glob
import datetime
#1---Parameter
search_path = r"C:\hogehoge\hoge\Downloads"#探すpath
search_file = "\*.png"#拡張子の選択
full_path = search_path + search_file#fullのpath
file_name = "\pict"
ext = ".png"#拡張子の設定
#2---情報取得
get_names = glob.glob(full_path)
#-----取得情報を基にfile名変更-----
for i,name in enumerate(get_names):
re_name = search_path + file_name + str(i+1) + ext
os.rename(name,re_name)
プログラムは「 C:\hogehoge\hoge\Downloads 」に「test.py」という名前であるとします。
「pyinstaller」使用方法
$ C:\hogehoge\hoge\Downloads> pyinstaller test.py
「completed successfully」との表示が出れば「pycache」「build」「dist」「test.spec」が作成されています。
exeファイルは「dist」にあります。
C:\hoge\hoge\Desktop\src\dist\test\test.exe
オプション
–onefile
$ C:\hogehoge\hoge\Downloads> pyinstaller test.py --onefile
「pyinstaller ファイル名 –onefile」とすることで簡単に作成できます。オプションとして「–onefile」を付けているのは関連するファイルを1つにまとめてexeファイルを生成するためです。
–noconsole
$ C:\hogehoge\hoge\Downloads> pyinstaller test.py --noconsole
コンソール(コマンドプロンプト)画面を表示しないです。
–icon=***.ico
$ C:\hogehoge\hoge\Downloads> pyinstaller test.py --icon=***.ico
アイコンを設定したい場合は、「***.ico」を指定することで設定可能です。
exe化が上手くいかない場合
pyinstaller Version確認 ⇒ PythonのVersion確認
インストールしている「pyinstaller」によっては、PythonのVersionが対応していない場合があります。
初めに、pyinstallerのVersion確認を行って下さい。
pyinstaller --version
次にインストールしているpyinstallerのVersionが使用しているPythonのVersionを対応しているか確認します。
こちらからどのpyinstallerのVersionがどのPythonのVersionに対応しているか分かります。ご参照下さい。
対応によっては、Python、pyinstallerのアップグレード/ダウングレードになると思います。
外部ファイルの参照方法 ⇒ specファイルの編集
exe化したプログラム内で設定ファイルや画像などを参照している場合、「.spec」ファイルで設定してあげる必要があります。
以下のPathで「test.py」をexe化した場合、distの他にspecファイルが作成されます。このspecファイルを開きます。
$ C:\hogehoge\hoge\Downloads> pyinstaller test.py
「test.spec」を開いたら、「a.datas += [(‘ファイル名’, ‘.\パス’, ‘タイプコード’)]」を追加します。複数ある場合はすべて追加します。
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['test.py'],
pathex=[],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
a.datas += [('test.jpg', '.\\test.jpg', 'DATA'), #← a.datasを追加
('test.ini','.\\test.ini', 'DATA')]
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.datas,
name='test',
debug=False,
strip=None,
upx=True,
console=False )
coll = COLLECT(exe, Tree('.'),
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
name='main')
追加したらspecファイルを用いたexe化を行います。
$ C:\hogehoge\hoge\Downloads> pyinstaller test.spec