WindowsタスクスケジューラでPythonアプリの起動ができなかったので対処を記録する
おはようございます。タカヒデです。
Windowsタスクスケジューラ使っていますか?
当然この記事を読んでいただいた方は知っているかと思います。
決まった時間やPC立ち上げ時などに、アプリなどを自動で実行してくれる便利なシステムです。
ただ今回、「WindowsタスクスケジューラでPythonで作成したアプリを起動」しようとしたところ、上手くいかなかったのでその対処を記録として残しておきたいと思います。
同じようにうまくいかない方は参考にしてみてください。
今回の事象
ではまずは今回の事象から。
Windowsタスクスケジューラで指定した時間にPythonを起動する設定をしてみました。
具体的には以下の記事で紹介している、「株価チェックアプリ」を時間で起動する設定をしています。

しかし、時間になってもPythonが起動されません。
右クリックから「実行する」を選択しても実行されません。

ちなみに前回の実行結果を見てみると、「指定されたファイルが見つかりません」と記載されています。
さてどうしたものでしょうか。
実行しない原因
諸々調べてみたところ、実行できない原因は「プログラム/スクリプト」の参照先が誤っていました。
該当タスクを右クリックし、「プロパティ」→「操作」を選ぶとタスクの操作を編集することができます。

ここで私は「Python」を実行したいので、「プログラム/スクリプト」に「python」と記載していました。
どうやら「Pythonを起動するためのファイルそのもの」を指定しなければならないようです。
具体的には「py.exe」もしくは「python.exe」を指定する必要があります。
【解決方法】「py.exe」のパスを記載する
解決策としては、「py.exe」のパスを記載すればよいのですが、パスが分からないので調べます。
Windows左下の検索窓から、「PowerShell」を立ち上げ、以下のコマンドを実行します。
(Get-Command py).Sourceすると、こんな感じのパスが出るかと思います。
C:\Users\ユーザー名\AppData\Local\Programs\Python\Launcher\py.exeこのパスを「プログラム/スクリプト」欄に記載しましょう

ちなみに他の項目について補足しておくと、
- 引数の追加:実行したいPythonファイルのパス
- 例:C:\programming\08_stock_alert_app\main.py
- 開始:Pythonファイルが置いてある作業フォルダのパス
- 例:C:\programming\08_stock_alert_app
これらを記載する必要があります。
なお、もし上記のコマンドでパスが出ない場合は以下のコマンドも試してみてください。
where pyもしくは
Get-Command pyなお、私は最初のコマンドしかパスが出てきませんでした。
これで、Pythonで作成したアプリをWindowsタスクスケジューラで起動できるようになっているはずです。
タスクを右クリックから「実行する」を選択し試してみてください。
この画像では分かりにくいですが「23時に自動でPythonを起動する」というタスクが設定できています。

以上です。
お疲れさまでした。
