LoginSignup
0
0

More than 3 years have passed since last update.

Rasbian/ラズパイ備忘録

Posted at

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分ごとに起動+エラー時のログ取得

参照:https://k99-tech.com/blog/archives/1141#i-5

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0