自作Pythonスクリプトを、バッチファイルのダブルクリックだけで実行できるととても便利です!
しかし、いざPythonスクリプト実行用のバッチファイルを作ってみようとすると…
- どうやってバッチファイルから実行するの?
- Anacondaの仮想環境を指定する方法がわからない…
といったトラブルに直面してしまった方も多いかと思います。
そこで、バッチファイルでAnacondaの仮想環境を指定、Pythonスクリプトを実行する方法を紹介します。
Anaconda仮想環境指定バッチ作成の流れ
仮想環境をしない最も単純なバッチファイルの場合は、次のスクリプトでOKです。
>> (python.exeの保存場所)/python.exe (pythonスクリプトの保存場所)/script_name.py
しかし、Anacondaの仮想環境を指定する場合には、以下のひと手間が必要になります。
- 仮想環境指定に必要なファイルのパス準備
- バッチファイルの作成(仮想環境指定+スクリプト実行)
と言っても、必要なファイルは、Anacondaのフォルダに準備されてるので安心してください。
以下で、パスの準備、バッチファイル作成方法の順に解説していきます。
仮想環境指定に必要なファイルのパス準備
Anacondaの仮想環境を指定する場合、次の3つのファイルのパスを事前に調べておきます。
- 仮想環境をActivateするための特殊なバッチファイル
- 仮想環境内のpython.exeのパス
- 実行するpython.pyファイルのパス
1つ目:「仮想環境をActivateするためのバッチファイル」
以下の場所にあるはずなので、確認しておきましょう。
C:\Users\USER_NAME\Anaconda3\Scripts\activate.bat
ここで、USER_NAME
は、ログインしているWindowsユーザー名です。
2つ目:「仮想環境内のpython.exe」
こちらは、以下の場所にあるはずです。
C:\Users\USER_NAME\Anaconda3\envs\ENV_NAME\python.exe
ここで、ENV_NAME
は、指定したい仮想環境名です。
3つ目:「実行するpython.pyファイルのパス」
これは自分で作成したものですね。パスを確認しておきましょう。
環境指定、スクリプト実行するバッチ作成例
バッチファイルを作成する場合は、次の手順を踏みます。
- メモ帳を開く
- バッチファイルの中身を記述(下記のサンプルを参考にしてください)
- 「ファイル名.bat」で名前を付けて保存
Anacondaの仮想環境を指定して、pythonスクリプトを実行するバッチの例は以下の通りです。
(rem行
は、コメント行なので削除OK)
rem文字コードをUTF-8に指定(パスに日本語がなければ不要)
chcp 65001
rem 仮想環境をActivateするための特殊なバッチファイルを起動
call C:\Users\USER_NAME\Anaconda3\Scripts\activate.bat
rem 仮想環境をActivate
call activate ENV_NAME
rem 作業フォルダの指定(割愛可能)
cd 作業フォルダのパス
rem python.exeでスクリプトを実行
C:\Users\USER_NAME\Anaconda3\envs\ENV_NAME\python.exe 実行するスクリプトのパス.py
rem コマンドプロンプトの画面を残す場合(残さない場合不要)
pause
上のバッチファイルでは、cd
で作業フォルダを指定しています。
バッチ実行時の作業フォルダは、デフォルトだとバッチファイルの保存場所になります。
スクリプト実行時、作業フォルダがルート(相対パスの基準)になるので、スクリプト内で相対パスを使用しているときは特に注意が必要です。
例えばデフォルトのままだと次のようになります:
"out.txt"
を出力すると、バッチファイルのあるフォルダに"out.txt"
を作成"input.txt"
を入力する場合、バッチファイルのあるフォルダに"input.txt"
にファイルが必要
バッチファイル実行例
次のスクリプトをバッチファイルで実行すると、作業フォルダに'Hello_world'
と書かれたテキストファイルが作成されます。
f = open('./hello_file.txt', 'w')
f.write('Hello_world')
f.close()
実行イメージとしては、次の画像の通りです。
おわりに|Pythonで作業を自動化しよう!
今回は、Anacondaの仮想環境を指定して、Pythonスクリプトを実行するバッチファイルの作り方を紹介しました。
この方法は、自作の作業自動化スクリプトとの相性がいいですね。
あまり知られていませんが、バッチファイルはショートカットの割り当ても可能です。こちらの記事を参考にしてみてください。