Pythonは、その柔軟性と利便性から多くの開発者に使用されていますが、Python環境がないと実行できないのが一般的です。
しかし、PyInstallerを使用することで、PythonコードをEXEファイルに変換し、Pythonがインストールされていないコンピュータでも実行できるようになります。
この記事では、PyInstallerの基本的な使用方法と、PythonコードをEXEファイルに変換するメリットについて解説します。
- PythonアプリケーションのEXEするメリット
- ライブラリのインストール方法
- PyInstallerを使用したEXEファイルの作成手順
EXEファイル化するメリット
PythonコードをEXEファイルに変換する主なメリットは、Pythonのランタイム環境がインストールされていないコンピュータでもプログラムを実行できる点です。
これにより、エンドユーザーはPythonのインストールや環境設定の手間を省くことができます。また、EXEファイルは単一の実行可能ファイルであるため、配布や移動が容易です。
さらに、Pythonコードがコンパイルされるため、ソースコードの保護も一定程度可能となります。ただし、完全なセキュリティを確保するには追加の対策が必要です。
- 環境非依存:
- Pythonがインストールされていないコンピュータでも実行可能。
- 利便性:
- 単一のEXEファイルで配布や移動が容易。
- ソースコード保護:
- コードがコンパイルされるため、一定程度のソースコード保護が可能。
- ユーザーフレンドリー:
- エンドユーザーがPythonのインストールや設定の手間を省ける。
- アプリケーション普及:
- 多くのユーザーが手軽に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アプリケーションを利用できるようになります。
また、開発者はアプリケーションの配布が容易になり、ソースコードの保護も一定程度可能となります。ただし、セキュリティ面での完全な保護を求める場合は、追加の対策が必要です。
それでは、また次の記事でお会いしましょう。
コメント