バッチファイルで Anaconda から Python を実行する 【Windows】

programming Python

バッチファイルから、Anaconda のコマンドプロンプトを起動して、Python のスクリプトを実行する方法についてまとめておきます。
Python スクリプトをダブルクリックで実行したり、タスクスケジューラからの自動実行が可能となります。

環境: Windows パソコン、Anaconda と Python 3 をインストール済み

例1 .py ファイルをそのまま実行する方法

バッチファイルの記載例

call C:\Users\(パス1)\Anaconda3\Scripts\activate.bat 
python C:\(パス2)\xxxx.py

使い方

① テキストエディタで、バッチファイル(例:bat1.bat)を作成し、上記のスクリプトを貼りつけてください。
② つぎに Anaconda3 のフォルダを確認して、activate.bat が入っているパスを確認し、(パス1)となっている部分を修正してください。
Anaconda のインストール時の設定によりますが、上記のように、C:\Users\ の下あたりに Anaconda をインストールしているケースが多いと思います。
③ 同様に、実行したい python のスクリプトのパスとファイル名を確認し、(パス2)とファイル名(xxxx.py)の部分を修正して保存してください。

④ ③ で作ったバッチファイルをダブルクリックすると Python を実行できます。
バッチファイルをダブルクリックしてみて、Python のスクリプトが実行できたら成功です!
以下の例2,例3も、使い方は同じです。

バッチファイルの説明

・ 1行目で Anaconda を起動するバッチファイルを呼び出しています。
・ その後、.py ファイルを実行します。

なお、Anaconda Prompt ではなく、Windows 標準のコマンドプロンプトを使う場合は、上記の1行目は不要ですので削除してください。通常のバッチファイルの使用方法と同じになります。

例2 .py 実行時にプロンプト画面を消す方法

上記の例1では、実行時にプロンプト画面(黒画面)が表示されます。以下はプロンプト画面を消す方法です。
複数の書き方ができますので、列挙しておきます。

例2-1:Python スクリプトのフルパスを指定して実行する

call C:\Users\(パス1)\Anaconda3\Scripts\activate.bat 
start pythonw C:\(パス2)\xxxx.py
exit 

例2-2:カレントフォルダを移動させて実行する

call C:\Users\(パス1)\Anaconda3\Scripts\activate.bat 
cd %~dp0 
start pythonw xxxx.py
exit 

バッチファイルの説明

例2は、Anaconda プロンプトの黒画面を消して実行したい場合の例です。

具体的には、Python の tkinter で GUI を作ってアプリ化するような場合です。
Python の tkinter で GUI を作ると、実行時に、Anaconda プロンプトの画面と GUI の画面の2つの画面が表示されると思います。
スクリプトの作成中やデバッグ中であれば、Anaconda プロンプトが表示されたほうが便利です。
しかし、作った GUI アプリを使う段階では、Anaconda プロンプトの黒画面は邪魔です。
そこで、バッチファイルを例2のようにすることで、実行時、Anaconda プロンプトの表示を消し、GUI の画面のみを残すようにします。

まず、例2-1について説明します。
① 1行目の activate.bat を実行するところは、例1と同じです。
② つぎに、バッチファイルの記載を start …で始まるよう修正します。
start とすることで、Python のスクリプトをスタートさせたら、Python の終了(GUI の終了)を待たずに、つぎの行を実行できるようになります。
またここで、”pythonw xxx.py” の形で実行するよう修正します。通常の Python スクリプトを実行する場合は、”python xxx.py” の形でコマンドを実行しますが、プロンプト画面を消して実行するためです。
③ 最後に、一連のバッチファイルのコマンドを実行&起動したら、プロンプト画面を閉じるため、末尾に exit を記載します。
バッチファイルをダブルクリックすると、Anaconda プロンプトが実行され、Python をスタートさせたら、Python スクリプトの終了を待たずにプロンプトが閉じる動きになります。

なお、毎回、(パス2)を設定するのが煩雑な場合は、例2-2のような記載も可能です。
この場合は、バッチファイルは Python スクリプトと同じフォルダに入れるようにしてください。“cd %~dp0” の行で、バッチファイルのあるフォルダにコンソールのカレントフォルダを移動 (cd …)させています。
これにより、フルパスを書かなくても実行できるようになります。

例3 仮想環境をアクティベートして .py を実行する

つぎは、仮想環境を指定する方法です。
具体的には、Anaconda を起動し、すでに作成してある仮想環境(例:env01)をアクティベートさせてから、.py を実行する記載例です。

バッチファイルの記載例

call C:\Users\(パス1)\Anaconda3\Scripts\activate.bat 
call conda activate env01 
python C:\(パス2)\xxxx.py

バッチファイルの説明:activate の自動化

・ 1行目は、例1、2と同じで、Anaconda を起動しています。
・ 2行目で、仮想環境 env01 をアクティベートさせています。
仮想環境の名前を env01 としたのは一例ですので、すでに設定している仮想環境に応じて、env01 の部分を書き換えてください。なお、仮想環境の設定方法については、下記の関連リンクにまとめていますので参照してください。
・ つぎに3行目で、例1、2と同様に、.py を実行しています。
これにより、仮想環境をアクティベートさせた状態で、Python スクリプトを実行できます。

※ また、余談となりますが、バッチファイルを使わずに、Python のスクリプト自体をダブルクリックして実行する方法としては、拡張子を xxx.py → xxx.pyw に変えるという手もあります。
この場合、xxx.pyw をダブルクリックして tkinter 等で作った GUI を起動させることができます。しかし、Anaconda 環境/通常のコンソール環境、import するモジュールなど、環境やスクリプトに依存して、うまく動かない場合もあるようです。バッチファイル化して仮想環境を指定してしまったほうが確実なケースがあるようです。

うまく動いたら ~ タスクスケジュールで自動化する方法

バッチファイルがうまく動いたら、Windows のタスクスケジューラで活用することも容易です。
上記で作成したバッチファイルをタスクスケジュール化する手順について、要点をまとめておきます。

タスクスケジューラでの設定手順
① Windows パソコン画面左下の検索欄(一例)に「タスクスケジューラ」と入力し、出てきたアイコンをクリックする。→ タスクスケジューラが起動する。
② 「タスクの作成…」をクリックし、以下を参考に入力、設定を行う。
全般タブ 名前: python1  (例)
トリガータブ → 「新規」ボタン → 毎日を選択 時刻:12:00:00 (一例)→ 「OK」
操作タブ → 「新規」ボタン → 「プログラム/スクリプト」欄で、上で作成したバッチファイルを選択して設定する → 「OK」 (登録終わり)

タスクスケジューラの確認方法
「タスク スケジューラ ライブラリ」をクリック → 上記で登録した python1 の名前がトリガー欄に追加されていることを確認する。

→ これで設定・確認が完了です!

まとめ

Python を活用するとき、毎回、Anaconda を起動してコマンドを打つのも煩雑でした。
そこで、バッチファイルの記載例についてまとめました。
いったんバッチファイルを作っておくと、コピー&ペーストで使いまわすことができるため、後が楽です。
これで、タスクスケジューラやダブルクリックで、作成した Python のスクリプトを実行できるようになります。

Windows パソコンで自動化を行う場合、タスクスケジューラ上で、直接 Python や Anaconda を操作するよりは、バッチファイルを経由させたほうが、設定、メンテナンス時の対応が楽になると思います。
親となるバッチファイルに、Python のスクリプトなどを複数、列挙しておくことで、指定した順番で定型処理、複雑な処理を実行することも可能になります。

なお、Python のスクリプトを簡単に起動させたい場合、バッチファイル以外にも、スクリプトを実行ファイル化(exe 化)する方法もあります。関心のある方は、以下の関連リンクも参照してみてください。

関連リンク
・ Anaconda でよく使うコマンド まとめ【仮想環境設定】
・ ローカル Web アプリでグラフ描画 【Python】
・ Python のスクリプトを実行ファイル (*.exe) 化する方法 【Windows】
・ Python で他の Python スクリプトを呼び出して実行する方法

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