pythonのpyautoguiのcronが動かない(ラズベリーパイ)

cronがうまくいかない原因は無限にあって、大先輩たちがみんな教えてくれるのですが、一応自分のケースは日本語のサイトが見当たらなかったため記載しておきます。

※私はラズベリーパイでやってますが、特にそこは依存しない問題みたいです。

 

■状況切り分け

pythonは手動実行はうまくいくのに、cronは反応しない。

catコマンドとかのcronは動く(cronは生きている)。

crontabのパーミッションとかも触ったことない(644のroot)

pyenvとかじゃない、限りなくピュアな状態?のpython

 

■原因

はい!それきっと環境変数不足です!

いや、cronにはパスを通さないといけないのもみなさんわかってますよね…

 

■間違った対策

crontabのファイルの最初に

「echo $PATH」で取得したパスを全部記載してみる。

 

■正しい対策

どの環境変数でこけてるか、標準エラー出力で調べてみてください。

私の場合はKeyError: 'DISPLAY'という記載があり、DISPLAYの値が読めなかったみたいです。

 

printenvでしらべたところ「DISPLAY=:0.0」とあったため、これをcrontabファイルの上部に記載したところやっと動きました…

pyautogui KeyError: 'DISPLAY' during automated cronjob on Linux · Issue #304 · asweigart/pyautogui · GitHub

 

私はこの程度ですみましたが、cronはほかにも絶対パスでかけーとか、文字コード気をつけろーとか大変なんだなと知りました。