![Ganzy](https://ganfreeimages.com/wp-content/uploads/2021/08/image_6483441-e1629076432940-300x300.jpg)
こんにちは、Ganzyです!!今回はpythonを用いたエグゼファイルの作成方法について紹介します。エグゼファイルに変換することで環境に依存せず実行することができますのでぜひ試してみてください!!
エグゼファイルとは
エグゼファイルとは、Windowsで実行可能なプログラムのファイル形式になります。いわゆるデスクトップにアイコンがあり、それをクリックすることで実行やGUI画面が表示されて操作することができるようなイメージです!!またエグゼファイルの拡張子は「.exe」という拡張子を持っております。
このエグゼファイルの利点としては、基本的にエグゼファイル単体で実行することができることにあります。例えばpythonであれば「.py」ファイルを実行する場合、ソースコードに応じた環境を構築する必要がありますが、エグゼファイルではそのような環境構築が必要なく実行することが可能になります。ですのでエグゼファイルにすることでだれでもどこでも簡単に実行することができます!!
pythonファイルをエグゼ化する方法
pythonでエグゼファイルを作成するためには「PyInstaller」を使用することで可能です!!
「PyInstaller」 は Python ファイルと依存するライブラリなどのファイルを一つのパッケージにまとめます。 そしてユーザーは、Python インタプリタやモジュールをインストールすることなく、パッケージ化されたアプリを実行することができるようになります!
それでは実際にPyInstallerを用いてエグゼファイルを作成してみます!!
①PyInstallerをインストールする
AnacondaPrompt上でインストールコマンドを実施します。
$ pip install pyinstaller
②エグゼ化するPYファイルのディレクトリに移動
今回エグゼ化するファイルは以下のPYファイルとします。こちらのコードではPysimpleGUIはを用いた2値化処理をGUI上で操作できる内容になっております。詳細についてはリンク先から確認してみてください!!
import datetime
import io
from pathlib import Path
import cv2
import numpy as np
import PySimpleGUI as sg
#レイアウト
original_image = [[sg.Image(filename='', key='-orginal_img-')]]
modify_image = [[sg.Image(filename='', key='-result_img-')]]
#read
read_layout = [[sg.Text("File"), sg.InputText(key='-input_file-', enable_events=True, ),
sg.FileBrowse('FileBrowse', key='-file-', target="-input_file-",), sg.Button('Read File', key='-read_file-')],
[sg.Button('Save',key='-save-'),sg.Button('Update',key='-Update-'),sg.Cancel()],
[sg.Text("Threshold")],
[sg.Slider((0, 255), 0, 1, orientation='h', key='-THRESH SLIDER-')]]
layout= [[sg.Frame(title='Read',layout=read_layout)],
[sg.Frame(title='Original',layout=original_image),sg.Frame(title='Results',layout=modify_image),]]
sg.theme('Dark Blue 3')
window = sg.Window('Threshold', layout,
location=(10, 10),alpha_channel=1.0,
no_titlebar=False,grab_anywhere=False).Finalize()
# flag
READ_File = False
while True:
event, values = window.read(timeout=20)
if event in (None, 'Cancel'):
break
elif event == '-read_file-':
read_path = Path(values['-input_file-'])
read_img = cv2.imread(str(read_path), cv2.IMREAD_GRAYSCALE)
read_display_img = cv2.resize(read_img,(320,320))
copy_img = read_display_img.copy()
read_display_img= cv2.imencode('.png', read_display_img)[1].tobytes()
copy_img= cv2.imencode('.png', copy_img)[1].tobytes()
window['-orginal_img-'].update(data=read_display_img)
window['-result_img-'].update(data=copy_img)
window['-THRESH SLIDER-'].update(128)
READ_File = True
if READ_File:
if event == '-save-':
out_path = f'{read_path.stem}_result.png'
cv2.imwrite(out_path, th_img)
elif event == '-Update-':
img_median = cv2.medianBlur(src=read_img, ksize=3)
_, th_img = cv2.threshold(img_median, int(values['-THRESH SLIDER-']), 255, cv2.THRESH_BINARY)
th_display_img= cv2.resize(th_img,(320,320))
th_display_img= cv2.imencode('.png',th_display_img)[1].tobytes()
window['-result_img-'].update(data=th_display_img)
window.close()
さて上記PYファイルをCドライブ直下のPythonフォルダに格納されている場合、以下のコマンドをAnacondaPrompt上で実行し、カレントディレクトリをPYファイルが格納されているディレクトリに変更します。
cd C:\Python
③エグゼ化コマンドを実行する
以下のコマンドを実行してエグゼファイルを作成します!
pyinstaller GUI_th.py
コマンドを実行すると以下のフォルダが作成されます。この中のdistフォルダ内のGUI_th.pyをクリックすることで実行することができます!!なおほかの環境でエグゼファイルを実行する際はdistフォルダごと配布しなければいけません!!
![](https://ganfreeimages.com/wp-content/uploads/2022/01/image-7.png)
ちなみにコマンドを以下のようにすることでエグゼファイル1つに固めることができます。しかしファイルを固めることで容量が大きくなりすこし処理が重たくなる傾向にあるのでご注意ください。
pyinstaller GUI_th.py --onefile
その他注意点
エグゼファイル化する際、実行環境をまるごろ処理されるため、実行環境にモジュールをたくさんインストールしている場合、処理が非常に重くなります。ですのでエグゼファイルを作成用の必要最低限の環境を構築することをお勧めします!!
またPysimpleGUIを活用して商用利用する場合、利用規約についても確認しなければなりません!利用する場合は注意です!!
まとめ
今回は、Pythonのファイルをエグゼ化する方法について紹介しました!!冒頭で説明したとおりエグゼ化すると環境構築が必要なく使用することができるのでめちゃくちゃ便利です!!そしてなによりエグゼ化することで作った感がありますので是非試してください!!!
参考サイト
![](https://ganfreeimages.com/wp-content/uploads/cocoon-resources/blog-card-cache/a2668a5b4ddd0efad0907a1269124d9c.jpg)
コメント