手動で実行すると動くのに、cronに設定すると何故か動かなくて結構苦労したのでメモ残します

・cronは$HOMEで実行される。

・cronは環境変数をセットしない。

・pyenv環境を利用している場合、PATHを明示しないと動かない

00 09 * * * python $HOME/test.py
# → この設定で動かない時は、
00 09 * * * $HOME/.pyenv/bin/python $HOME/test.py
# → このように、明示的にPATH指定するとcronで動くようになる場合がある

pythonの実行ファイルのパスはこちらのコマンドで確認可能

which python
$HOME/.pyenv/bin/python
# → pyenv環境を参照しているので明示的にPATHを指定する必要がある
which python3
/usr/bin/python3
# → pyenv環境を利用していないので、cronで python3 と指定するだけでcronが動く

参考ブログ

おすすめの記事