EXE化の使い方|Pythonで作ったアプリの自動起動

EXE化の使い方|自作アプリの自動起動

こんな方へ特におすすめ

概要

こんにちは。サイオステクノロジーのはらちゃんです!今回9本目のブログ執筆です。

前回はストップウォッチアプリを開発しました。しかし、コードのままだと逐一コマンドで起動する必要があり面倒です。

そこで今回は、もっと便利に活用するために自動で起動させる方法を簡単3ステップでお伝えします。

EXE化ってなに?

はじめに、”EXE(エグゼ)化”という変換の概要をご説明します。

EXE化とは、プログラミング言語(Pythonなど)の翻訳機と、プログラムの指示書をひとまとめにして、誰でもワンクリックで動かせる状態にすることです。

EXE化の仕組み

stopwatch.py はただの「設計図」のようなもので、動かすにはPythonという「工具」と、Tkinterという「部品」が必要です。そのため、EXE化する前のプログラム単体ではアプリを起動させることができません。

PyInstallerは、「設計図(スクリプト)」「工具(Python本体)」「部品(ライブラリ)」の全てを一つにまとめて、StopWatch.exe という「完成品(実行ファイル)」を製造します。

そのため、EXE化の工程を経てようやくアプリがどこでも起動できる準備が整います。

この仕組みはよく料理に例えられます。

「レシピ(指示書)」を動かすには、受け取る相手のPCに「キッチン(Python環境)」と「調理器具(ライブラリ)」が完備されている必要があります。

相手側で用意する手間を省くために、このレシピをプロのシェフごと箱詰めにして「お弁当」にするのです。

EXE化のメリット・デメリット

項目EXE化のメリットEXE化のデメリット
起動ダブルクリック一発展開処理の時間がかかる
配布相手にファイルを渡すファイルサイズが大きくなる
コードダブ中身が見えにくくなるコードの修正ができない

前提条件

  • Windows 上で作業すること
  • Python 3.8+ がインストールされていること
  • pyinstallerをインストール可能であること

Step1:EXE化

さっそく箱詰めしていきましょう。

.bat ファイルの作成

この.batファイルは、PythonスクリプトをEXEファイルに変換する「PyInstaller」というツールを実行するためのものです。

これを実行すると、stopwatch.py から StopWatch.exe を作成します。

build_windows.bat
@echo off
REM PythonのEXE化ツール「PyInstaller」をインストールします
pip install pyinstaller

echo.
echo --- Building StopWatch.exe ---
echo.

REM PyInstallerを実行します
REM --onefile: 関連ファイルをすべて1つのEXEにまとめます
REM --noconsole: GUIアプリ実行時に後ろで黒いコンソール画面が出ないようにします
pyinstaller --onefile --noconsole --name StopWatch stopwatch.py

echo.
echo --- Build finished! ---
echo `dist` フォルダ内に `StopWatch.exe` が作成されました。
echo.
pause

Step2:スタートアップへの登録

.ps1 ファイルの作成

この.ps1ファイルは、EXEファイルをWindowsの「スタートアップ」フォルダに登録し、PC起動時に自動実行するためのスクリプトです。

create_shortcut.ps1
param(
    [string]$TargetPath = "C:\Users\YourName\Documents\TIMER\dist\StopWatch.exe",
    [string]$ShortcutName = "StopWatch.lnk"
)

# (以下は変更不要)
$startup = [Environment]::GetFolderPath('Startup')
$w = New-Object -ComObject WScript.Shell
$sc = $w.CreateShortcut((Join-Path $startup $ShortcutName))
$sc.TargetPath = $TargetPath
$sc.WorkingDirectory = Split-Path $TargetPath
$sc.Save()
Write-Host "Shortcut created in: $startup"

Step3:実行

いよいよアプリの起動です。以下のコードを順に実行してください。

必ず、Windows上で作業するように注意してください。WSL(Linux)上でPyInstallerを実行しようとしてもエラーになります。

PowerShell
# "cd" の後に、stopwatch.pyがあるフォルダのパスを入力します
cd C:\Users\YourName\TIMER

もしコードがWSL上にあるなら、Windows上にダウンロードされるようにツールのインストールも行ってください。

PowerShell
pip install pyinstaller

PowerShell
pyinstaller --onefile --noconsole --name StopWatch stopwatch.py

これでEXEファイルが作成できました!

最後に、.ps1 ファイルの2行目にある、$TargetPathをビルド結果のパスに書き換えてます。

create_shortcut.ps1
param(
    # ↓↓↓ この行のパスを書き換える ↓↓↓
    [string]$TargetPath = "C:\Users\YourName\Documents\TIMER\dist\StopWatch.exe",
    [string]$ShortcutName = "StopWatch.lnk"
)

# (以下は変更不要)

修正したスクリプトを実行します。

PowerShell
.\create_shortcut.ps1

これで、Windowsのスタートアップフォルダにショートカットが作成されました。

PCを再起動してみてください。 ログイン後、自動的にストップウォッチ (StopWatch.exe) が起動し、デスクトップの常に一番手前に表示されれば、すべての作業は完了です。

エラー解決

PowerShellのセキュリティエラーです。Windowsが、信頼できる作成元(Microsoftなど)によって署名されていないスクリプトの実行をデフォルトでブロックしているために発生しています。

以下のコマンドを実行して、今開いているこのPowerShellの画面(プロセス)だけ、一時的にスクリプトの実行を許可します。

PowerShell
Set-ExecutionPolicy Bypass -Scope Process

上記コマンドを実行した後、もう一度スクリプトを実行します。

PowerShell
.\create_shortcut.ps1

振り返り:前回の開発環境

前回のストップウォッチ開発では、dev-containerを開発環境として用意していました。

dev-containerは、ホストOSから隔離されたネットワーク環境を持っています。

そのため、どこでも同じように動くクリーンな環境が出来上がります。

しかし、この「隔離」が原因で、コンテナーのGUIをPC本体の画面に映し出すために、Xサーバーの設定が必要となりました。

このように、dev-containerを使わないほうが開発が楽な場合もあると学びになりました…。

まとめ

今回は自作アプリをEXE化することと、それを使ってWindows上でアプリを自動起動させることを学んできました。

本ブログで書かれている開発コードは、私のGithubに公開しているので自由にコードを書き替えて使ってみてくださいね。

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です