※このページではアフィリエイト広告を利用しています

【Python応用】「pyinstaller」を用いたプログラムのexe化方法-まとめ-

Python

Pythonで作成したプログラムを誰かに配布したい!ということがあると思います。そんな時、配布先で環境構築からしないと動かない、となったら時間がかかって不便です。

そこで「exe」化することで解決できることが挙げられます。

でも、Pythonのプログラムって簡単に「exe」化できるの?という疑問が出てくると思います。

結論から言うと簡単に作成できます。

ここでは、Windows環境での「pyinstaller」の使用方法について解説しています。

この記事の対象

  • pythonで作成してプログラムをexe化したい方
  • 「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」拡張子のファイル名を連番にするというものになります。

プログラムの詳細についてはこちらを参照下さい。

>>>os.renameを用いたファイル名変更

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」が作成されています。

completed successfullyの一例

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

タイトルとURLをコピーしました