Pythonで実行ファイルを作る方法 - 初心者でも簡単にexe化できる手順を解説
こんにちは、とまだです。
Pythonでプログラムを作ったあと、「これを他の人にも使ってもらいたい」と思ったことはありませんか?
しかし相手のPCにPythonがインストールされていないと動かない...。
そんな悩みを解決するのが実行ファイル化です。
今回は、Pythonスクリプトを誰でも使える実行ファイルに変換する方法を解説します。
実行ファイル化で広がる可能性
Pythonスクリプトを実行ファイルにすると、どんなメリットがあるのでしょうか。
日常生活で例えるなら、料理のレシピを完成品の冷凍食品にするようなものです。
レシピ(Pythonスクリプト)があっても、材料(Python環境)や調理器具(必要なライブラリ)がなければ料理は作れません。
しかし冷凍食品(実行ファイル)なら、電子レンジ(PC)さえあれば誰でも楽しめます。
実際の業務でも活用シーンは多岐にわたります。
社内ツールの配布では、同僚のPCに環境構築をお願いする必要がなくなります。
データ処理の自動化ツールも、ダブルクリックだけで動作するようになります。
これにより、技術に詳しくない方でも簡単に使えるツールを提供できるのです。
PyInstallerで始める実行ファイル作成
実行ファイルを作る方法はいくつかありますが、今回は最も使いやすいPyInstallerを使います。
まずはPyInstallerのインストールから始めましょう。
pip install pyinstaller
インストールが完了したら、実際に変換してみます。
例として、簡単なPythonスクリプトを用意しました。
# hello.py
def main():
name = input("お名前を入力してください: ")
print(f"こんにちは、{name}さん!")
input("Enterキーで終了します...")
if __name__ == "__main__":
main()
このスクリプトを実行ファイルに変換するには、以下のコマンドを実行します。
pyinstaller hello.py
しばらく待つと、dist
フォルダの中に実行ファイルが作成されます。
Windowsならhello.exe
という名前のファイルができているはずです。
より実用的な実行ファイルを作る
基本的な変換方法がわかったところで、実用的なオプションを見ていきましょう。
単一ファイルにまとめる
デフォルトでは複数のファイルが生成されますが、配布を考えると1つのファイルにまとめたいですよね。
pyinstaller --onefile hello.py
--onefile
オプションを使うと、すべてを1つの実行ファイルにまとめてくれます。
コンソールウィンドウを非表示にする
GUIアプリケーションの場合、黒いコンソールウィンドウは不要です。
pyinstaller --onefile --noconsole gui_app.py
--noconsole
オプションで、コンソールウィンドウを非表示にできます。
アイコンを設定する
実行ファイルにオリジナルのアイコンを設定することも可能です。
pyinstaller --onefile --icon=myicon.ico hello.py
--icon
オプションでアイコンファイルを指定します。
実践的な例:CSVデータ処理ツール
実際の業務で使えるツールの例として、CSVファイルを処理するスクリプトを実行ファイル化してみましょう。
# csv_processor.py
import csv
import os
from datetime import datetime
def process_csv(input_file):
"""CSVファイルを読み込んで集計処理を行う"""
if not os.path.exists(input_file):
print(f"エラー: {input_file}が見つかりません")
return
total = 0
count = 0
with open(input_file, 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
for row in reader:
if '金額' in row:
try:
total += int(row['金額'])
count += 1
except ValueError:
pass
# 結果を出力
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
output_file = f"集計結果_{timestamp}.txt"
with open(output_file, 'w', encoding='utf-8') as f:
f.write(f"処理件数: {count}件\n")
f.write(f"合計金額: {total:,}円\n")
f.write(f"平均金額: {total//count:,}円\n" if count > 0 else "平均金額: 0円\n")
print(f"処理が完了しました。結果は{output_file}に保存されました。")
def main():
print("=== CSV集計ツール ===")
input_file = input("処理するCSVファイル名を入力してください: ")
process_csv(input_file)
input("\nEnterキーで終了します...")
if __name__ == "__main__":
main()
このスクリプトを実行ファイル化する際は、以下のようにします。
pyinstaller --onefile --name CSV集計ツール csv_processor.py
--name
オプションで実行ファイルの名前を日本語にすることもできます。
トラブルシューティング:よくある問題と解決策
実行ファイル化で遭遇しやすい問題と、その解決方法を紹介します。
アンチウイルスソフトに検出される
PyInstallerで作成した実行ファイルは、アンチウイルスソフトに誤検出されることがあります。
これは未署名の実行ファイルであることが原因です。
対策として、実行ファイルを圧縮する前に、アンチウイルスソフトの例外設定に追加することをおすすめします。
ファイルサイズが大きい
Pythonの実行環境を含むため、ファイルサイズが大きくなりがちです。
特にNumPyやPandasなどの大きなライブラリを使用している場合は顕著です。
不要なモジュールを除外することで、サイズを削減できます。
pyinstaller --onefile --exclude-module matplotlib hello.py
起動が遅い
--onefile
オプションを使うと、起動時に一時ファイルを展開するため時間がかかります。
頻繁に起動するツールの場合は、--onefile
を使わない方が快適かもしれません。
環境別の注意点
Windows環境
Windowsでは、パスに日本語が含まれていると問題が起きることがあります。
作業フォルダは英数字のみのパスにすることをおすすめします。
また、管理者権限が必要な処理を含む場合は、マニフェストファイルの設定が必要になることもあります。
Mac/Linux環境
これらの環境では、実行権限の付与を忘れずに行いましょう。
chmod +x your_program
また、他のOSで実行するファイルは作成できないことに注意してください。
Windowsで使うexeファイルは、Windows環境で作成する必要があります。
仮想環境を活用した安定した実行ファイル作成
実行ファイル化の際は、仮想環境の使用を強くおすすめします。
# 仮想環境の作成
python -m venv myenv
# 仮想環境の有効化(Windows)
myenv\Scripts\activate
# 仮想環境の有効化(Mac/Linux)
source myenv/bin/activate
# 必要なパッケージのインストール
pip install pyinstaller
pip install requests # 例:必要なライブラリ
# 実行ファイルの作成
pyinstaller --onefile my_script.py
仮想環境を使うことで、必要最小限のパッケージだけを含む実行ファイルを作成できます。
これにより、ファイルサイズの削減と動作の安定性向上が期待できます。
まとめ
Pythonスクリプトの実行ファイル化について解説してきました。
PyInstallerを使えば、簡単なコマンドで実行ファイルを作成できます。
基本的な使い方から始めて、オプションを活用することで、より実用的なツールを作れるようになります。
実行ファイル化により、Pythonの知識がない方でも使えるツールを提供できるようになります。
社内ツールの配布や、友人への共有など、活用の幅が大きく広がります。
ただし、ファイルサイズやセキュリティソフトの問題など、注意点もあります。
これらを理解した上で活用すれば、Pythonの可能性をさらに広げることができるでしょう。
ぜひ実際に試してみて、便利なツールを作ってみてください。
著者について

とまだ
フルスタックエンジニア
Learning Next の創設者。Ruby on Rails と React を中心に、プログラミング教育に情熱を注いでいます。初心者が楽しく学べる環境作りを目指しています。
著者の詳細を見る →