【業務自動化】Chapter2-1:Pythonコードを実行ファイルに変換しよう

ながみえ

チャプター1では openpyxlの基本操作 について学習しました。

今回からは PyInstallerによる自動化ツール作成 を体験していきましょう。

Chapter1:PythonでExcelを操作しよう
Chapter2:PyInstallerで自動化ツールを(.exe)作ろう
 ・Chapter2-1:Pythonスクリプトを実行ファイルに変換しよう ◁今回はここ
 ・Chapter2-2:表記ゆれを一瞬で直す置換マシンを作ろう
 ・Chapter2-3:置換の対象ファイルを増やそう
 ・Chapter2-4:エラー処理を追加しよう
 ・Chapter2-5:ダイアログウィンドウを追加しよう
Chapter3:便利な自動化ツールを5つ作ろう
Chapter4:Webスクレイピング入門
Chapter5:自動化ツールを作って稼ごう

Pythonで作成した自動化スクリプトは、通常であれば「Pythonをインストールしている環境」でしか動作しません。

ですが、クライアントや社内の同僚に「Pythonをインストールして実行してください」とお願いするのはハードルが高いですよね。

そこで役立つのが PyInstaller です。

PyInstallerを使えば、Pythonで書いたスクリプトを「実行ファイル(.exe形式)」に変換でき、Pythonを知らない人でもクリック一つで使えるツールを配布できるようになります。

この記事では、初心者の方がつまずきやすい「インストールから動作確認まで」を丁寧に解説します。

最終的に、あなたのPythonコードを手軽に配布できる形に変換できるようになることが目標です。

<<前のページ

Excel自動化の記事一覧

次のページ>>

PyInstallerの基本とインストール手順(Windows/macOS/Linux)

PyInstallerを導入するための基本知識とインストール手順について解説していきます。

まずは「PyInstallerとはどのようなツールなのか」を理解し、その後で実際に環境にインストールしてみましょう。

あわせて読みたい
openpyxl使える関数・メソッド・クラス一覧【Excel自動化の基本リファレンス】
openpyxl使える関数・メソッド・クラス一覧【Excel自動化の基本リファレンス】
【Python】勉強猫がノートパソコンを前にして学習を始める様子。記事内の学習スタート用イラスト

PyInstallerとは|exe化の仕組みとできること

PyInstallerは、Pythonスクリプトをスタンドアロン形式の実行ファイルに変換するライブラリです。

これにより、Pythonがインストールされていないパソコンでもスクリプトを動かせるようになります。

主な特徴は次のとおりです。

  • Python環境がなくても動作する実行ファイルを作成できる
  • Windows、Linux、macOSに対応している
  • 単一ファイル形式(exeひとつだけ)や複数ファイル形式の出力を選べる
  • 外部ライブラリやリソースファイルもまとめて同梱可能

PyInstallerの導入方法|pipを使ってインストール

PyInstallerは通常のPythonライブラリと同じように pip コマンドでインストールできます。

まずはコマンドプロンプト(Windows)やターミナル(Linux/Mac)を開き、次のコマンドを入力しましょう。

pip install pyinstaller

このコマンドを実行すると、PyInstaller本体と必要な依存パッケージが自動的にインストールされます。

インストール確認|バージョン・PATHのチェック方法

正しくインストールできたかどうかを確認するには、以下のコマンドを実行します。

pyinstaller --version

バージョン番号が表示されればインストール成功です。例えば「6.16.0」などと表示されます。

もしエラーが出た場合は、このまま下の「インストール時によくあるエラーと解決策」の項目を参考にしてください。

問題なくインストールできた場合は、ここ をクリックしてPyInstallerの使い方の章に進みましょう。

インストール時によくあるエラーと解決策

PyInstallerは便利なライブラリですが、インストール時にエラーが発生することがあります。

ここでは、初心者がつまずきやすい代表的なトラブルとその対処法を紹介します。

pipが古い・壊れている場合の解決

PyInstallerは比較的新しい依存ライブラリを必要とするため、pipのバージョンが古いとエラーになることがあります。

ERROR: Could not find a version that satisfies the requirement pyinstaller

解決方法として、まずpipを最新版にアップデートしてください。

python -m pip install --upgrade pip

再度、pip install pyinstaller を実行すれば解決することが多いです。

WindowsでPATHが通らないときの対処

インストール自体は成功しても、コマンドプロンプトで PyInstaller が認識されないことがあります。

これは「環境変数のPATHにScriptsフォルダが登録されていない」ことが原因です。

以下の処理を実行しましょう。

  1. Pythonがインストールされているフォルダを確認する(例:C:\Users\ユーザー名\AppData\Local\Programs\Python\Python310\Scripts)。
  2. そのパスを環境変数PATHに追加する。
  3. コマンドプロンプトを再起動し、pyinstaller --version で確認する。

macOS/Linuxの権限関連エラー

LinuxやmacOSでは、インストール時に管理者権限が必要になることがあります。

エラーメッセージ例:

Permission denied

この場合は --user オプションをつけるか、管理者権限でインストールしてください。

pip install --user pyinstaller
sudo pip install pyinstaller
【Python】勉強猫がノートパソコンを見ながら考え込む様子。記事内の休憩用イラスト

使う前の準備|プロジェクト構成と相対パス

PyInstallerを使ってPythonスクリプトをexeファイルに変換する際には、事前にファイルやフォルダの配置を整えておくことが重要です。

準備が不十分だとexe化した後にファイルが見つからない、正しく動作しないといったトラブルが起こりやすくなります。

ここではその基本的な注意点を解説します。

プロジェクト階層の設計|データ/出力フォルダを含めた構成

Pythonのスクリプトは、相対パスや絶対パスを使って外部ファイルにアクセスします。

exeに変換した後も同じように動作するため、実行ファイルと必要なフォルダの位置関係をあらかじめ決めておくことが大切です。

Chapter1ではスクリプトはスクリプトでかため、ブックはworkbooksフォルダにかためて保存していましたが、Chapter2では、記事毎にかためて保存するようにしてください。

以下のような階層になります。

Chap2/   					# チャプター2の保存フォルダ
|
├── Chap2-1/				# 本記事の保存フォルダ
│   ├── Chapter2-1.py	   # 本記事で紹介するサンプルコード
│   ├── Chapter2-1.exe	   # 本記事で作成する実行ファイル
│   └── Workbooks/
│       └── Chapter2-1.xlsx
│
├── Chap2-2/				# 次の記事の保存フォルダ
│   ├── Chapter2-2.py
│   ├── Chapter2-1.exe
│   ├── Workbooks/
│   │   └── Chapter2-2.xlsx
│   └──texts/
│       └── サンプルテキスト.txt
│
├── Chap2-3/
├── Chap2-4/
└── Chap2-5/

exe化した後の注意点|ファイルパスの取得方法の違い

スクリプトを実行する際、ファイルのパスを取得するためにpathlibライブラリを使用しています。

しかしPyInstallerでexeファイルを作成すると、内部でPythonコードが「凍結(frozen)」された状態になります。

すると通常の __file__ が使えず、パスの取得ができなくなってしまいます。

  • Pythonスクリプト:pathlibライブラリでパスを取得
  • exe化したツール:pathlibライブラリが使えない

そこで、exe化後は実行ファイルの場所を基準にしてパスを指定する必要があります。

その違いを吸収するために、後で紹介するサンプルコードのパス取得部分では、sysライブラリを使って次のような記述しています。

import pathlib, sys

if getattr(sys, 'frozen', False):
    BASE_DIR = pathlib.Path(sys.executable).parent  # exeで動作している場合のパス
else:
    BASE_DIR = pathlib.Path(__file__).parent        # pyファイルとして動作している場合のパス

sysライブラリ はインストール不要なPythonの標準ライブラリの一つであり、Python自体に関わる設定・状態・入出力などを担当します。

3行目の getattr(sys, ‘frozen’, False) はスクリプトで実行するとFalseを、exeで実行するとTrueを返します。

そして4行目の sys.executable は現在実行されているPython実行ファイル(exe)の絶対パスを表します。

このように書いておくと、pyファイルで実行してもexeファイルで実行しても同じように動作するため、動作確認がスムーズになります。

よく使われる型が決まっているので細かいことは考えず、exe化するときには必ず上記のように書くと暗記しても問題ありません。

PyInstallerでのexe化を体験|サンプルコードと実行の流れ

ここからは、実際にサンプルコードをPyInstallerで変換し、exeファイルを作成してみます。

初心者の方がつまずかないよう、コマンドの実行例や生成されるフォルダ構成もあわせて解説します。

サンプルスクリプト|openpyxlの簡単な処理

今回利用するサンプルスクリプトは、Chapter1-6の練習問題で作成した「Excelのブックを作成し、テンプレートを複製して名前を差し込む」コードです。

スクリプトの役割は次の通りです。

  1. テンプレートのExcelファイルを作成する
  2. メンバー名のリストを別のExcelに保存する
  3. リストを読み込み、テンプレートを複製して名前を差し込む

以下のコードを適切な階層にコピーし、スクリプトとして実行してみましょう。

workbooksフォルダ内にTraining2-1フォルダが作られ、その中に6個のxlsxファイルができれば成功です。

import openpyxl, pathlib, sys
if getattr(sys, 'frozen', False):
    BASE_DIR = pathlib.Path(sys.executable).parent  # exe で動いている場合
else:
    BASE_DIR = pathlib.Path(__file__).parent        # pyファイルとして動いている場合
file_path = BASE_DIR / "workbooks"
output_path = file_path / "Training2-1"
output_path.mkdir(exist_ok=True)

# --- ① 最初のブックを作成 ---
main_book = openpyxl.Workbook()
main_sheet = main_book.active
main_sheet.title = "メイン"
main_sheet["A1"] = "これはテンプレートです"
main_sheet["B2"] = "ここに名前が入ります"
main_book.save(output_path / "template.xlsx")

# --- ② リストを別のブックに保存 ---
names = ["田中", "佐藤", "鈴木", "高橋"]

list_book = openpyxl.Workbook()
list_sheet = list_book.active
list_sheet.title = "メンバーリスト"
row_no = 1  # Excelは1行目から始まるので初期値を1にする
for name in names:
    list_sheet.cell(row_no, 1).value = name
    row_no += 1  # 行番号を1つずつ増やす
list_book.save(output_path / "names.xlsx")

# --- ③ リストを読み込み、テンプレートを複製 ---
# 名前リストを読み込む
list_book = openpyxl.load_workbook(output_path / "names.xlsx")
list_sheet = list_book.active
members = []
for i in range(1, list_sheet.max_row + 1):
    value = list_sheet.cell(i, 1).value
    members.append(value)

# テンプレートを複製して名前を差し込む
for member in members:
    copy_book = openpyxl.load_workbook(output_path / "template.xlsx")
    copy_sheet = copy_book.active
    copy_sheet["B2"] = f"{member} 様"
    copy_book.save(output_path / f"{member} 様.xlsx")

このコード自体の解説はここでは行いません。

分からない部分がある場合は、Chaptet1-6 の記事へ戻って復習を行ってください。

PyInstallerを使ってみよう|サンプルスクリプトのexe化

それでは、先ほどのスクリプトを実際にexe化してみましょう。

以下の手順通りに進めれば、Pythonを知らない人でもダブルクリックで実行できるアプリが完成します。

1. コマンドプロンプト(またはターミナル)を開く

コマンドプロンプト・もしくはターミナルを開きます。

  • Windows: スタートメニューで「cmd」と入力し、Enter。
  • macOS/Linux: 「ターミナル」を起動。

その後、実行したいスクリプトが保存されているフォルダに移動します。

移動するには、コマンドプロンプト上で「cd + 保存フォルダのパス」を打ち込み、Enterキーを押してください。

例えば、以下のように打ち込むことになります。

cd C:\Users\業務自動化学習\Chap2\Chap2-1

2. PyInstaller を実行する

基本的なコマンドは以下です:

pyinstaller chapter2-1 --onefile.py

--onefile は 1つの exe ファイルにまとめるオプションです。本サイトでは基本的に全てこれをつけて実行します。

このコマンドを実行すると、しばらく処理が走ります。

3. 完成した exe を確認する

処理が終わると、フォルダの中に新しいディレクトリができます:

Chap2-1/
├── build/                 ← 中間ファイル(気にしなくてOK)
├── dist/                  ← 完成した exe が入るフォルダ
│   └── Chapter2-1.exe    ← 完成した exe
├── Chapter2-1.py          ← 元のスクリプト
│
└── Workbooks/             ← 元々あるフォルダ

完成品は dist フォルダの中にある Chapter2-1.exe です。

このファイルをダブルクリックすれば、Python がインストールされていない PC でも実行できます。

ただし、今回のコードはworkbooksフォルダとの位置関係が正しくないとうまく起動しません。

完成したexeを、以下のような階層になるよう移動させましょう。

Chap2-1/
├── Chapter2-1.py
├── Chapter2-1.exe
└── Workbooks/

これで、スクリプトからでも実行ファイルからでもコードが起動できるようになりました。

実際に実行ファイルをダブルクリックし、スクリプトと同じ結果となることを確認してみましょう。

まとめ

今回は PyInstallerを使ってPythonスクリプトをexeファイルに変換する方法 を学びました。

記事の流れを振り返ると次の通りです。

  • PyInstallerとは?
    Pythonコードをexe化して配布できる強力なライブラリ
  • 動作確認とファイル構成
    exe化する際にはファイル階層や相対パスの扱いに注意が必要である

このステップを経ることで、Pythonを知らない人にも配布できる「使いやすいツール」として提供できるようになります。

次の章では、実際の業務で役立つ具体的な自動化ツール作成(表記ゆれの一斉置換ツール)に進んでいきます。

今回学んだ「exe化」の知識を活かして、さらに実務的なツールを作れるようになりましょう。

もっと分かりやすい学習サイトにするために

この記事を読んで「ここが分かりにくかった」「ここが難しかった」等の意見を募集しています。

世界一わかりやすいExcel自動化学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

Excel自動化の記事一覧

次のページ>>

FAQ(PyInstallerでPythonをexe化する際によくある疑問)

Q1:openpyxlなどの外部ライブラリは、PyInstallerで自動的に同梱されますか?Excelが入っていないPCでも動作しますか?

はい。一般的な純Python製ライブラリは、PyInstallerのビルド時に依存関係としてアプリ本体に同梱されます。

そのため、配布先PCにPythonやライブラリを別途インストールする必要はありません。

また、openpyxlはExcelアプリケーションに依存しないため、Microsoft ExcelがインストールされていないPCでも動作します。

ただし、ライブラリによっては動的ライブラリ(DLL)や実行時に読み込む追加ファイルを利用している場合があり、環境差異(OSや権限設定、アンチウイルスの制限)によって期待どおりに読み込めないケースがあります。

最終的に配布する前に、想定する社内標準PCや利用部門の端末で実機テストを行い、起動やファイル入出力、Excelファイルの読み書きが問題ないかを確認しておきましょう。

Q2:「onefile」と「onedir」はどちらで配布すべき?それぞれのメリット・デメリットは?

onefile(単一exe化)とonedir(フォルダ配布)は、運用目的によって使い分けます。

  • onefile(単一ファイル配布)
    • メリット:配布が簡単で、メール添付やチャットで渡しやすい。配布物の管理がしやすい。
    • デメリット:起動時に一時展開が必要なため初回起動が遅くなりがち。セキュリティ製品によっては誤検知が発生しやすい傾向がある。差分更新があっても毎回丸ごと再配布になる。
  • onedir(フォルダ配布)
    • メリット:展開済みのため起動が速い。依存ファイルが可視化されるため、ログやテンプレートなど周辺ファイルを同階層で運用しやすい。差分更新時に一部ファイルのみ差し替えが可能。
    • デメリット:配布物が複数ファイルになるため、メール添付に向かない。利用者側でフォルダごと正しく取り扱ってもらう必要がある。

社内配布や定期的な差分更新があるツールはonedir、スポット配布や利用者のITリテラシーをあまり期待できない場面ではonefileを選ぶケースが多いです。

運用体制(配布チャネル、更新頻度、セキュリティポリシー)に合わせて選択してください。

Q3:exeがウイルス判定・SmartScreenで止まるのはなぜ?安全に配布するための実務的な対策は?

社内外に未署名の実行ファイルを配布すると、Windows SmartScreenやアンチウイルスで「不明な発行元」として警告されることがあります。

これは悪意があると断定されたわけではなく、配布実績や署名の有無に基づく安全性評価によるものです。実務では次の対策が有効です。

  • コード署名の検討:組織としてコードサイニング証明書を取得し、ビルド済みexeに署名することで、発行元の信頼性を示せます。社内配布のみでも、IT部門でのホワイトリスト登録や署名ポリシー運用があると警告を避けやすくなります。
  • 配布チャネルの統一:社内ポータル、SharePoint、資産管理ツールなど信頼できる経路で配布し、メール添付は避ける。配布元URLや保管場所を固定し、更新手順と連絡フローを明確にします。
  • ハッシュ値の提示と変更履歴:配布ページにハッシュ値(例:SHA-256)と更新履歴を掲載しておくと、利用者が改ざんの有無を確認できます。
  • IT部門との連携:アンチウイルスの除外ポリシーやアプリケーション制御ルールに事前に登録してもらう。初回展開時に誤検知が出やすいonefile運用では特に有効です。
  • ユーザー向け案内:初回起動時に表示されうる警告のスクリーンショットと正しい手順(どのボタンを選べばよいか)を配布ページに掲載しておくと、問い合わせの削減につながります。

これらはインストール時のエラー対処とは別の観点(配布と信頼性の確保)であり、現場運用に直結するポイントです。

最初の配布ロットでフィードバックを集め、組織のセキュリティポリシーに沿って継続的に改善していきましょう。

次のステップ:業務自動化を「実務レベル」まで引き上げたい方へ

このコース(Chapter1〜2)の無料教材では、Python と Excel(openpyxl)を使って「単純作業を自動化する」ための基本的な考え方やコードの書き方を身につけることができます。

ただ、実際の業務で使おうとすると、次のような壁にぶつかりがちです。

  • 社内で使える「ちゃんとしたツール」っぽい形にしたい
  • エラーが出たときに、自分で原因を特定して直せない
  • 副業したくても本当に正しく動くか自信がない

そこで、格安で販売中のChapter3以降では「現場でそのまま使える業務自動化スクリプト」を作りながら学べる構成としました。

そこでは、Chapter2までで学んだ内容を土台にしつつ、

  • 実務でよくあるパターン別のサンプルコード
  • トラブルシューティング(エラーの潰し方)の考え方
  • より高度な自動化を実現するWebスクレイピングの基本
  • 業務自動化スキルを用いて副業で稼ぐための具体的な方法

などを通して、「自分の職場に合わせてカスタマイズできる力」を身につけることを目指します。

教材は↓↓のリンクボタンの販売所で購入するとPDFやpyファイルでダウンロードできます。

もしくは、各学習記事内で会員登録して頂くと、そのままこのサイト内で全ての記事を読めるようになります。

どこよりも安く手実践的なこの教材を、是非ご活用下さい^^

<<前のページ

Excel自動化の記事一覧

次のページ>>

記事URLをコピーしました