豆腐とコンソメ

豆腐とコンソメ

幸せと、主にラズパイとpythonについて書きます。

PyCharmでsudo権限でデバックする方法

日記

退職が決まって、怒涛のラストスパートでいろいろ捗らない。

PyCharmでsudo権限でデバックする方法

前回、pythonでキーボードのイベントを取得する方法を書きました。
tohutokonsome.hatenablog.com

最後にできました!と書いておいて、いろいろ試していたら、キー入力をうまく認識していないことが発覚しました。

どこに問題があるのかを調べたいのですが、使用しているモジュール、pynputはsudo権限で実行しないと、キー入力を検知してくれません。

PyCharmでデバック実行するときは、sudo権限で実行しなければいけなかったので、ここにやったことを記載します。

※参考にさせていただいた記事
Run/Debug as root in PyCharm

sudoersを編集する

sudoの設定ファイル、sudoersを編集します。

$ sudo visudo

ファイルを開いたら、以下の一行を追加します。

実行ユーザー名  ALL=NOPASSWD:実行するpythonのpath

()
komoe_mario  ALL=NOPASSWD:/Users/konoe_mario/.pyenv/versions/raspberry_3.5.1/bin/python

これを行うことで、指定したpythonはsudoで実行してもパスワードを求められなくなります。

sudoersについては、以下の記事を参考にさせていただきました。
qiita.com

python-sudo.shの作成

なぜ、これが必要か?っていうところがあんまりわかってないです。 ここで作ったシェルを、後ほどPycharmのインタプリタに指定します。

#!/bin/bash
# sudo 実行するpythonのpathを指定
sudo /Users/konoe_mario/.pyenv/versions/raspberry_3.5.1/bin/python "$@"

インタプリタをsudoで実行しているところがポイントなのかしら。

pythonではなくシェルをインタプリタに指定できるっていうところに驚きです。

時間があるときに検証したいのですが、とりあえず書いちゃいます。

python-sudo.shに実行権限を付与する

$ chmod +x python-sudo.sh

PyCharmのインタプリタにptyhon-sudo.shを指定する

PyCharmCommunityEditon->Preferences->Project:Project名から変更できます。
f:id:konoemario:20170528222447p:plain:w500
ちょっと隠れてしまっているけれども、歯車のアイコンを選んで、AddLocalを選択。

f:id:konoemario:20170528222450p:plain:w500
インタプリタに、作成したpython-sudo.shを選択する。

以上になります。