Python実行中のPermission denied
Rabian(ラズパイ4)で、ユーザーアカウントでpython3.7 のコードを実行中に以下のエラー(permission denied)が発生。
結論:sudo で「moduleインストール+python実行」で解消。
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 265, in open
self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | os.O_NONBLOCK)
PermissionError: [Errno 13] Permission denied: '/dev/serial0'
原因は/dev/serial0へのpermissionがないことだと思い、pythonコードをsudoで実施した。
sudo python3 co2out.py
今度はgspreadモジュールがないと言われる(pipしていたのに..)。
Traceback (most recent call last):
File "co2out.py", line 5, in <module>
from oauth2client.service_account import ServiceAccountCredentials
sudoでインストールし直したら今度はうまく行った。
sudo pip3 install gspread
#Rasbian でPATHを通す
python3のgspreadをインストールしている際に以下警告が現れる。
The script google-oauthlib-tool is installed in '/home/XXXXX/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
文字通りPATHをgoogle-oauthlib-toolにPATHを通して置かないと後々まずいと思い以下コードをコマンド上で実施。
※絶対に$PATHを冒頭につけること!これをつけることで「既存のPATHに追加する」という意味になる。(つけないと既存のパスが失われる...)
参照:https://www.fabshop.jp/path-exportcommand/
$ export PATH="$PATH:/home/XXXXX/GDrive/bin"
#ラズパイで定期的に実行
windowsのタスクスケジューラのようなものがcrontab。
コマンドでcrontabを編集
crontab -e
初心者はおとなしくnanoで編集。
-
-
-
-
- は Minutes Hour Day Month Weekと対応。
-
-
-
#crontabの末尾に追記
1 1 * * * sudo python3 /home/XXXXX/GDrive/XXX.py
#毎日01:01にpythonを流す
*/5 * * * * sudo python3 /home/XXXXX/GDrive/XXX.py 2> /home/XXXXX/Logs.log
#5分ごとに起動+エラー時のログ取得