Pythonで作成したプログラムは、そのままでは.py拡張子となり、パソコンにPythonがインストールされていないと実行できません。それだと人に配布できないし、何より自分でも毎回Pythonを起動する必要があり面倒です。そこで実行ファイル(.exeファイル)に変換する方法を以下に示します。Pythonのプログラムをそのまま配布するのではなく、実行ファイルとして配布することで、Pythonをインストールしていないユーザーでも簡単に使えるようになります。
1.PyInstallerをインストール
以下のコマンドでPyInstallerをインストールします。
pip install pyinstaller
モジュールをインストールしました。インストールに必要なコード文も簡単です。
2. PyInstallerを使って変換
以下のコマンドを実行して、.exeファイルを作成します。
pyinstaller --onefile ○○.py
実に簡単なコードですね。「一つのファイルにします」と書くだけ。ただし、実際には○○.pyの保存してあるディレクトリパスを書かないとPythonが迷子になってしまうので、
pyinstaller --onefile "C:\Projects\MyPythonProgram\○○.py"と書きます。(パスはパソコンの環境によって変わります。これはあくまでもサンプルです)
このコマンドを実行すると、distというフォルダ内に○○.exeが作成されます。
ディレクトリパスという概念が出てくると、コマンドを打った経験のないwindows世代の方には苦手意識を持つ人もいますが、○○.pyを右クリックして「パスをコピー」を選択したものを貼り付ければ良いので、慣れればさほど難しくはないと思います。
さて、出来上がった実行ファイルを実行すると、黒いコマンドプロンプト画面が表示されます。これはデフォルトでPythonの挙動が分かるように実行コードを表示させるものですが、人に配布するにはちょっとウザイ機能です。スマートとは言えません。なので人に配るには背景にコードが表示されないようにします。
pyinstaller --onefile --noconsole ○○.py
ディレクトリパス入りならpyinstaller --onefile --noconsole "C:\Projects\MyPythonProgram\○○.py"になります。
この--noconsoleオプションを追加することで、黒い画面が表示されなくなります。
!注意!
.pyを.exeファイルにする瞬間に、ウイルスセキュリティソフトに検知されエラーになることがあります。というよりほぼ100%エラーになります。そのためexe化の実施時は、ウイルスセキュリティのリアルタイム監視を停止させないと正常修了しないと思います。
そして配布先のパソコンでウィルス検出された場合は、
1.ウイルス対策ソフトに誤検知の報告を行い、プログラムを「安全」として登録する。
2. ウイルス対策ソフトの「例外設定」に.exeファイルを追加する。
といった作業が必要になります。まあこれは全ての実行ファイルに共通することですので、一緒に配布するマニュアルに記載しておけばより親切という感じです。
なお、プログラムを圧縮して配布する際、圧縮ファイルのパスワードを設定することで、誤検知を減らせる場合があります。
まとめ
この方法を使うことで、Pythonプログラムを実行ファイル化して配布する際、より使いやすく安全性の高い形で提供できます。簡単な手間で配布が出来てしまうのもPythonの魅力の一つです。