cronがPythonスクリプトを実行すると接続できません。

cronがPythonスクリプトを実行すると接続できません。

main.py最新のツイートを読むためにtweepyを使用するPythonスクリプトがあります。このPythonスクリプトを呼び出すシェルスクリプトlooplauncher.shを作成しました。

cd /
cd home/pi/LCDinterface
sudo python main.py &
cd /

python main.pysudoを有効または無効にして実行すると、sh looplauncher.sh私のプログラムは正しく実行されます。次の行をcronに貼り付けました。sudo crontab -e

*/2 * * * * sleep 60 && sudo sh /home/pi/LCDinterface/looplauncher.sh >/home/pi/logs/loopcronlog 2>&1

Pythonスクリプトは2分ごとに実行されます(ログで確認可能)。しかし、私のツイートは決して得られません。 main.pyを手動で実行すると、いつも私のツイートを取得できます。私は接続時間を提供するために遅延を追加してsudo / sudoなしの組み合わせをたくさん試しました。しかし、これまで何も効かなかった。助けてください? (私はRaspberry Pi 3でこれを行っています。)

cronが実行されると、次のエラーが発生します。

Traceback (most recent call last):
  File "main.py", line 49, in <module>
    main()
  File "main.py", line 32, in main
    tweet = getTweet('RaspProject')
  File "/home/pi/LCDinterface/twitterHelper.py", line 20, in getTweet
    print (tweet._json['text'])
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 32: ordinal not in range(128)

スクリプトを手動で実行すると正常に動作します。 (私にはéáóóűのような特別なハンガリーの文字がありますが、

答え1

crontabの他のすべての項目の前に次の行を追加してみてください。

PATH=/usr/bin/:/bin

関連情報