はじめに
Pythonを使って日々実行させる用事があるのですが、プロジェクト単位でVirtualenvを使って環境を分けています。
この状態でバッチ起動やタスクスケジューラ起動をさせる方法についてまとめました。
参考にしてみてください。
VirutalenvでのPythonプログラムの作成
フォルダ作成
mkdir StableDiffusion cd StableDiffusion
仮想環境構築
virtualenv venv
仮想環境へ移動
.\venv\Scripts\activate.bat
(venv)があると仮想環境にいる状態になる
pip の更新
python -m pip install --upgrade pip
更新ファイルが無いみたいです。
プログラム作成
sample.py
print("Hello,World")
手動で実行
python .\sample.py
バッチファイルからVirtualenvを実行
start.bat
call D:\Python\StableDiffusion\venv\Scripts\activate python D:\Python\StableDiffusion\sample.py pause
実行終了後コンソール画面を閉じたい場合はpauseを外せば自動で閉じます
PowerShellからVirtualenvを実行
start.ps1
D:\Python\StableDiffusion\venv\Scripts\activate.ps1 python D:\Python\StableDiffusion\sample.py [Console]::ReadKey() | Out-Null
実行終了後コンソール画面を閉じたい場合は[Console]::ReadKey() | Out-Nullを外せば自動で閉じます
タスクスケジューラーからスケジュール実行
プログラムの部分だけ解説します。
トリガーの部分は任意に設定してください。
実行時の状態によっては管理者権限や、ログインユーザの指定が必要な場合があります。実行時の状態を事前に把握しておきましょう。
バッチファイル
プログラム/スクリプト
D:\Python\StableDiffusion\start.bat
バッチファイルをフルパスで指定
動作確認
必ず実行できるか確認しておきましょう。
作成時に実行できないと
PowerShell
- プログラム/スクリプト
PowerShell5以前の場合
%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe
PowerShell7の場合
C:\Program Files\PowerShell\7\pwsh.exe
- 引数
"D:\Python\StableDiffusion\start.ps1"
実行ファイルパスを登録
- 開始(オプション)
D:\Python\StableDiffusion\
実行ファイルのあるフォルダを指定
動作確認
スケジューラ作成時に必ず実行できるか動作確認をしておきましょう。
手動でタスクスケジューラを実行してパスが通っているか確認します。
その上で目的の時間に実行できるか確認します。