main.py
最新のツイートを読むためにtweepyを使用するPythonスクリプトがあります。このPythonスクリプトを呼び出すシェルスクリプトlooplauncher.shを作成しました。
cd /
cd home/pi/LCDinterface
sudo python main.py &
cd /
python main.py
sudoを有効または無効にして実行すると、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