Pythonのスクリプトを擬似exe化して手軽に実行する方法

未分類

最近Pythonでいろいろ作成していますが、スクリプトを作ってもPycharmから実行するのは手間ですし、外部モジュールを使用した場合はexe化するのが大変らしい(未確認ですが…)ので、何とか手軽にexeの様に実行できないか検討したところ、自分なりに便利な方法が出来たので共有させていただきます。

需要があるかは不明ですが…

1. メリット

  1. exe化する必要がないので、exe化する際の手間が省ける。
  2. pyinstallerでexe化すると、pipなどでインストールされたモジュールは利用できなかったり、モジュールを含めてexe化するとファイルサイズが大きくなるが、この方法だとbatファイルとテキストファイルの約2kbに抑えられる。
  3. スクリプトを修正する際には、Pycharmなどで修正した後にexe化せずにすぐに実行できる。
  4. スクリプトを実行する際にコマンドプロンプトへドラッグしたり、Pycharmを起動しておく必要がない。
  5. 仮想環境を指定して有効化できるので、大元のPythonの環境を変えることなく、用途に応じた仮想環境で実行できる。

2. デメリット

  1. Python環境が全くない環境では利用できない。
  2. Pythonスクリプトが実行されるまでに少しタイムラグがある?

3. 今後の課題

  • Pythonスクリプトで実行している場合はキーボードからの入力を検出して強制終了が可能?だと思うのですが、バッチファイルの場合はその方法がわからなかったので、その機能の追加。

4. 使用方法

  1. 適当なディレクトリに好きな名前のフォルダ(ここでは擬似exeフォルダとします)を作成する。
  2. 擬似exeフォルダの中に、py_dir.txtというテキストファイル(batファイルを編集すれば名前は何でもいいです)を作成し、py_dir.txtに実行したいPythonスクリプトのフルパスを記載します。
  3. 以下のソースコードで構成されるbatファイルを擬似exeフォルダに好きな名前(ここでは擬似exe.batとします)で作成する。
  4. 擬似exe.batを実行すると、一瞬コマンドプロンプトの画面が表示されますが、すぐに最小化され、指定したPythonスクリプトが実行されます。
  5. 実行したいPythonスクリプトの分だけフォルダを作成し、batファイルの名前を変更してショートカットを作成しておけば、すぐにPythonスクリプトが実行できるようになります。

5. ディレクトリ構成図

擬似exeフォルダ
├py_dir.txt     ←実行したいPythonスクリプトのフルパスを記載します
└擬似exe.bat ←仮想環境を有効化し、py_dir.txtに記載されているPythonスクリプトを実行します

6. ソースコード※1

以下、1行ずつ解説していきます。

↑コマンドプロンプトでの処理内容を非表示にします。

↑バッチファイルを通常起動するとコマンドプロンプトの画面が最前面に表示されてしまうため、自分を自分で呼び出すことで最小化状態で起動することが可能な様です。※2

↑Pycharmなどで構築した仮想環境のactivate.batのフルパスを記載します。
私の場合は
C:\Users\ユーザー名\PycharmProjects\venv\Scripts\activate.bat
にありました。

↑同じディレクトリにあるpy_dir.txtに記載された実行したいPythonスクリプトのフルパスをpy_dirという変数に入れます。

↑先ほどの変数py_dirを利用して、コマンドプロンプトで入力するときと同じ様に、「Python 」の後に実行したいPythonスクリプトのフルパスを入力して、コマンドプロンプトでPythonスクリプトを実行します。

間違っているところや不明な点があればコメントを頂ければ幸いです。

7. 謝辞

※1
仮想環境を有効化する際に、Pythonスクリプトをexe化した物では仮想環境が有効化されなかったため、teratailで質問した所、「y_waiwai」様と「katsuko」様にご教授いただき、問題解決いたしました。ありがとうございました。

※2
「バッチファイルを最小化した状態で起動するバッチファイル」については
http://piyopiyocs.blog115.fc2.com/blog-entry-731.html
こちらを参考にさせていただきました。
ありがとうございます。

コメント

タイトルとURLをコピーしました