PythonアプリケーションのEXEファイル化 | PyInstallerの使用方法を解説

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

Pythonは、その柔軟性と利便性から多くの開発者に使用されていますが、Python環境がないと実行できないのが一般的です。

しかし、PyInstallerを使用することで、PythonコードをEXEファイルに変換し、Pythonがインストールされていないコンピュータでも実行できるようになります。

この記事では、PyInstallerの基本的な使用方法と、PythonコードをEXEファイルに変換するメリットについて解説します。

この記事でわかること
  • PythonアプリケーションのEXEするメリット
  • ライブラリのインストール方法
  • PyInstallerを使用したEXEファイルの作成手順
目次

EXEファイル化するメリット

PythonコードをEXEファイルに変換する主なメリットは、Pythonのランタイム環境がインストールされていないコンピュータでもプログラムを実行できる点です。

これにより、エンドユーザーはPythonのインストールや環境設定の手間を省くことができます。また、EXEファイルは単一の実行可能ファイルであるため、配布や移動が容易です。

さらに、Pythonコードがコンパイルされるため、ソースコードの保護も一定程度可能となります。ただし、完全なセキュリティを確保するには追加の対策が必要です。

EXE化のメリット
  1. 環境非依存:
    • Pythonがインストールされていないコンピュータでも実行可能。
  2. 利便性:
    • 単一のEXEファイルで配布や移動が容易。
  3. ソースコード保護:
    • コードがコンパイルされるため、一定程度のソースコード保護が可能。
  4. ユーザーフレンドリー:
    • エンドユーザーがPythonのインストールや設定の手間を省ける。
  5. アプリケーション普及:
    • 多くのユーザーが手軽にPythonアプリケーションを利用可能。

このメリットにより、Pythonで開発されたアプリケーションの普及が促進され、多くのユーザーがPythonアプリケーションを手軽に利用できるようになります。

pyinstallerとは

PyInstallerは、Pythonアプリケーションをスタンドアロンの実行可能ファイルに変換するためのツールです。

これにより、Pythonのランタイム環境がインストールされていないコンピュータでもPythonプログラムを実行できます。PyInstallerは、Windows、macOS、Linuxで利用可能で、使用方法もシンプルです。

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

PyInstallerをインストールします。コマンドプロンプトまたはターミナルに以下のコマンドを入力して実行してください。

pip install pyinstaller

pyinstallerでEXEファイルを作成する手順

ここからは、実際にpyinstallerを使ってEXEファイルを作成する手順について解説します。

EXEファイルの作成

Pythonコードが含まれているディレクトリに移動します。

そして、以下のコマンドを実行してEXEファイルを作成します。

pyinstaller --onefile ファイル名.py

ここで、「ファイル名.py」は、変換したいPythonファイルの名前です。

--onefileオプションは、単一の実行可能ファイルを作成するためのオプションです。これにより、生成されるEXEファイルが1つだけになります。

EXEファイルの確認

コマンドが正常に完了すると、distという名前の新しいフォルダが作成されます。このフォルダ内に、作成したEXEファイルが格納されています。

実行結果

ここからは、実際にEXEファイルを作成してみます。

pyinstallerコマンドを実行します。今回はimgcnv-png2jpg.pyというPythonのファイルをEXE化の対象とします。

pyinstaller --onefile imgcnv-png2jpg.py
545 INFO: PyInstaller: 6.0.0
545 INFO: Python: 3.9.17 (conda)
569 INFO: Platform: Windows-10-10.0.22621-SP0
577 INFO: wrote C:\user\lab\projetc\dxapp\imgcnv-png2jpg.spec
577 INFO: Extending PYTHONPATH with paths
['C:\\user\\lab\\projetc\\dxapp']
989 INFO: checking Analysis
989 INFO: Building Analysis because Analysis-00.toc is non existent
989 INFO: Initializing module dependency graph...
1006 INFO: Caching module graph hooks...
1048 INFO: Analyzing base_library.zip ...
2467 INFO: Loading module hook 'hook-encodings.py' from 'C:\\Users\\shinf\\anaconda3\\envs\\web\\lib\\site-packages\\PyInstaller\\hooks'...
3809 INFO: Loading module hook 'hook-pickle.py' from 'C:\\Users\\shinf\\anaconda3\\envs\\web\\lib\\site-packages\\PyInstaller\\hooks'...
4535 INFO: Loading module hook 'hook-heapq.py' from 'C:\\Users\\shinf\\anaconda3\\envs\\web\\lib\\site-packages\\PyInstaller\\hooks'...
4874 INFO: Caching module dependency graph...
4988 INFO: Running Analysis Analysis-00.toc
4988 INFO: Looking for Python shared library...
5044 INFO: Using Python shared library: C:\Users\shinf\anaconda3\envs\web\python39.dll
5044 INFO: Analyzing C:\user\lab\projetc\dxapp\imgcnv-png2jpg.py
5061 INFO: Processing module hooks...
5069 INFO: Looking for ctypes DLLs
5078 INFO: Analyzing run-time hooks ...
5085 INFO: Looking for dynamic libraries
5206 INFO: Extra DLL search directories (AddDllDirectory): []
5206 INFO: Extra DLL search directories (PATH): []
5820 INFO: Warnings written to C:\user\lab\projetc\dxapp\build\imgcnv-png2jpg\warn-imgcnv-png2jpg.txt
5852 INFO: Graph cross-reference written to C:\user\lab\projetc\dxapp\build\imgcnv-png2jpg\xref-imgcnv-png2jpg.html
5884 INFO: checking PYZ
5884 INFO: Building PYZ because PYZ-00.toc is non existent
5884 INFO: Building PYZ (ZlibArchive) C:\user\lab\projetc\dxapp\build\imgcnv-png2jpg\PYZ-00.pyz
6102 INFO: Building PYZ (ZlibArchive) C:\user\lab\projetc\dxapp\build\imgcnv-png2jpg\PYZ-00.pyz completed successfully.
6143 INFO: checking PKG
6143 INFO: Building PKG because PKG-00.toc is non existent
6143 INFO: Building PKG (CArchive) imgcnv-png2jpg.pkg
7953 INFO: Building PKG (CArchive) imgcnv-png2jpg.pkg completed successfully.
7959 INFO: Bootloader C:\Users\shinf\anaconda3\envs\web\lib\site-packages\PyInstaller\bootloader\Windows-64bit-intel\run.exe
7959 INFO: checking EXE
7959 INFO: Building EXE because EXE-00.toc is non existent
7959 INFO: Building EXE from EXE-00.toc
7959 INFO: Copying bootloader EXE to C:\user\lab\projetc\dxapp\dist\imgcnv-png2jpg.exe
8089 INFO: Copying icon to EXE
8095 INFO: Copying 0 resources to EXE
8098 INFO: Embedding manifest in EXE
8111 INFO: Appending PKG archive to EXE
8119 INFO: Fixing EXE headers
8241 INFO: Building EXE from EXE-00.toc completed successfully.

コマンドを実行すると、このようにログが出力されます。最後の行にBuilding EXE from EXE-00.toc completed successfully.というメッセージが表示されたら変換成功です。

変換が完了すると、以下のようにdistというディレクトリが生成されています。

distの中を開くと.exeファイルが生成されていることが確認できました。

EXE化の注意点

PythonコードをEXE化する上で以下のような注意点があります。

  • PyInstallerは、コードを完全に隠蔽するわけではないため、機密情報を含むコードには注意が必要です。
  • 作成されたEXEファイルは、作成したOSでのみ実行可能です。異なるOSで実行する場合は、そのOS上でEXEファイルを作成する必要があります。

まとめ

PyInstallerを利用することで、Pythonコードを環境非依存のEXEファイルに変換できます。

この方法により、エンドユーザーはPythonのインストールや設定の手間を省き、手軽にPythonアプリケーションを利用できるようになります。

また、開発者はアプリケーションの配布が容易になり、ソースコードの保護も一定程度可能となります。ただし、セキュリティ面での完全な保護を求める場合は、追加の対策が必要です。

それでは、また次の記事でお会いしましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次