Pythonプログラムをダブルクリックで使う

2023年5月7日 広告

Pythonに慣れてきて作業が自動化できるようになると、「コマンドプロンプト」や「Visual Studio Codeのターミナル」で実行するのが面倒になるときがあります。

またPythonプログラムを作ったは良いけど、現場での起動方法に悩む方もいらっしゃると思います。

今回はファイル上でダブルクリックしてPythonプログラムができるようになる方法を紹介します。

Windows 11で実行しており、Macではそのまま実行できない可能性があります。この点に留意してください。

バッチファイル(.bat)でPythonプログラムを実行

まずは簡単なバッチファイルでの実行方法です。

Pythonファイル(.py)を実行する指示を出すファイルを作成します。

バッチファイルの作成

メモ帳で以下のコードを記載します。

「ファイル名.py」には自身が作成したPythonプログラムのファイル名を記載します。

@echo off
python ファイル名.py
pause

「名前を付けて保存」の際に名前の最後に「.bat」をつけて保存します。

これでバッチファイルに変換できます。

ファイル名作成イメージ

バッチファイルをダブルクリックで実行

バッチファイルとPythonファイルを同じフォルダに保存します。

作成したバッチファイルをダブルクリックすることでPythonプログラムが実行されます。

バッチファイルとPythonファイルの保存先が違う場合は、例えば以下のようにPythonファイルの位置を指定したコマンドにしなければなりません。

@echo off
python C:\Users\ユーザー名\Documents\ファイル名.py
pause

難しい場合はバッチファイルのショートカットを作って好きなところへ配置し、それをダブルクリックで実行しても構いません。

PyInstallerでPythonプログラムを実行ファイル(.exe)に変換

次はPyInstallerを使ってPythonファイルそのものを実行ファイルに変換します。

PyInstallerのインストール

pipを用いたインストールの詳細手順は省きます。

PyInstallerを以下のコマンドでインストールします。

pip install pyinstaller

Pythonスクリプトを実行ファイルに変換

「コマンドプロンプト」や「Visual Studio Codeのターミナル」でPyInstallerの変換コマンドを実行します。

実行するためには、まずPythonファイルを保存している位置まで移動する必要があります。

例えば以下のようにcd(カレントディレクトリ)コマンドを使います。

cd C:\Users\ユーザー名\Documents

バッチファイル作成時と同様に「ファイル名.py」には自身が作成したPythonプログラムのファイル名を記載します。

pyinstaller ファイル名.py

新たに「dist」というフォルダに実行ファイルが保存されています。

一緒に生成されている「build」というフォルダは実行ファイルを作るときに使われるものですので、正常に作成された後は不要です。

distフォルダ内のファイルを1ファイルとしてまとめる場合は以下のコマンドで実行します。

ただし、実行ファイルの動作が少し遅くなります。

pyinstaller --onefile ファイル名.py

実行ファイルをダブルクリックで使用

PyInstallerによって作成された実行ファイルをダブルクリックすることでPythonプログラムが実行されます。

バッチファイル生成時とは異なり、実行ファイルをどこに保存していても問題ありません。

実はPythonをインストールしていないPCでも実行できます。

実行ファイルの中にPythonや使っているライブラリの情報が一緒に保存されているためです。

(参考)Pathlibが影響するエラー

最新のpyinstallerにはPathlibというPythonの標準ライブラリの互換性がなくなっていました。

アンインストールすると問題なく実行できます。

The 'pathlib' package is an obsolete backport of a standard library package and is incompatible with PyInstaller. Please remove this package (located in C:\Users\……) using
"C:\Users\…………\python.exe" -m pip uninstall pathlib
then try again.

以下のコメントを参考に、PyInstallerのバージョンを5.7にダウングレードすることで解決しました。

I've experienced the same problem. I managed to solve it by downgrading pyInstaller to 5.1 (from 5.8) without touching pathlib. An additional possibility to consider.

How to convert python file to exe? The 'pathlib' package is an obsolete backport of a standard library package and is incompatible with PyInstaller
pip install pyinstaller==5.7

ちなみにコメントの方は5.1にダウングレードしたそうですが、バージョン5.5、5.6、5.7も試してうまくいっています。

バッチファイルと実行ファイルの使い分け

バッチファイルと実行ファイルで方法が2種類ありますが、どのように使い分けるのでしょうか?

まずはバッチファイルで考える

ダブルクリックして実行するだけであればバッチファイルを作成する方が分かりやすくて簡単です。

実際に動かすPythonファイルがそのまま残っているため編集作業も楽です。

ただPythonファイルとバッチファイルの保存先に少し気をつけなければなりません。

実行ファイルの利点

実行ファイルにはバッチファイルにはない以下のような利点があります。

  • Pythonプログラムを使いたいデバイスにPythonや必要なライブラリをインストールしなくて良い
  • Pythonコードの直接的な閲覧や改ざんが難しくなりセキュリティが向上する

例えば現場用PCにPythonの環境を入れたくない場合でも、実行ファイル(.exe)の形にすることで簡単に現場移行できるようになります。

(発展)定期実行できるようにする

Windowsのタスク スケジューラを活用することで、先ほど作成したバッチファイルや実行ファイルを定期実行できるようになります。

具体的には、ダブルクリックして実行する操作をタスク スケジューラにお任せして自動で実行してもらいます。

タスク スケジューラを起動しタスク定義の画面を開く

  1. スタートメニューから「タスク スケジューラ」を起動する
  2. 左タブにある「タスク スケジューラ ライブラリ」を選択する
  3. 右タブにある「タスクの作成」を選択する
タスク スケジューラの操作画面
タスク定義の画面

タスクの定義をする

  1. 「全般」タブでタスクの名前や説明を入力し、適切なセキュリティオプションを選択する
  2. 「トリガー」タブで「新規」をクリックし、開始日時、実行間隔、繰り返し回数などを指定する
  3. 「操作」タブで新規」をクリックし、アクションの種類として「プログラムの開始」を選択する
  4. プログラム/スクリプトの欄に実行したいバッチファイル(.bat)や実行ファイル(.exe)指定する
  5. 必要に応じて「条件」タブと「設定」タブで、タスクの実行条件やその他のオプションを調整する
「トリガー」タブの新規設定画面
「操作」タブの新規設定画面

オススメ書籍

・化学のためのPythonによるデータ解析・機械学習入門

データ分析に必要な最低限の知識を解説したうえで、化学プラントで得られるデータの扱い方が紹介されています。
脱ブタン塔や排煙脱硝装置を例に取り上げられておりイメージしやすくなっています。

化学のためのPythonによるデータ解析・機械学習入門
化学のためのPythonによるデータ解析・機械学習入門

www.amazon.co.jp

・Pythonによる時系列分析: 予測モデル構築と企業事例

プロセス製造において時系列データの分析は欠かせません。
どのように時系列予測モデルを構築し、ビジネスへ活用していくかを詳細なPythonコードとともに解説してくれます。

Pythonによる時系列分析: 予測モデル構築と企業事例
Pythonによる時系列分析: 予測モデル構築と企業事例

www.amazon.co.jp

・PyCaretで学ぶ 機械学習入門

機械学習モデルを構築するのは想像以上に手間がかかります。
その一連の作業を自動化できるPyCaretというライブラリの使い方が分かりやすく解説されています。

PyCaretで学ぶ 機械学習入門
PyCaretで学ぶ 機械学習入門

www.amazon.co.jp

関連記事

データ分析の基礎
データのスケール変更方法
プラント制御へのAI活用
記事への問い合わせはこちら

-データサイエンス
-

//