VSCodeのSSH接続機能で、RaspberryPi内のコードを編集してデバッグ


VSCodeとは?

マイクロソフトが開発したソースコードエディタ「Visual Studio Code」の略です。
無料・軽量・多機能の三拍子揃ったエディタとして、急速に支持を広げているそうです。

2019/10版より、RaspberryPi(ARM v8)へのSSH接続機能が公式サポートされたので、
RaspberryPi内のPythonコード遠隔編集を試した結果を記事にしました。

結論から言うと、ブレークポイント付きのデバッグが実現できたりと、快適な遠隔開発環境を実現できました!

※SSHでなく直接RaspberryPiでVSCodeを使用したいとき

2021/4に、VSCodeがRaspberryPi OSに正式対応しました。こちらの記事が参考になるかと思います

必要なもの

・RaspberryPi (本例ではRaspberryPi3 ModelB)
・上記と同じネットワークにつながったPC (本例ではWindows10)
・Visual Studio Code 1.39.2以降(上記PCにインストール、本例では1.44.2使用)

手順

下記記事を参考にさせて頂きました
https://qiita.com/hukatama024e/items/9f96730381f0a34c6da6

①SSH接続の設定と、configファイルの保存

本記事「公開鍵認証の場合」を参考に、SSH公開鍵認証の確立とconfigファイルの保存を実施してください。

なお、configファイルはPC内の下記フォルダに保存してください
C:\Users\[ユーザー名]\.ssh

②VSCodeのインストール

PC側にVSCodeをインストールしてください

参考記事
https://qiita.com/psychoroid/items/7d85ae6bade4a67aedb1

③Remote Developmentのインストール

VSCodeを起動し、下記の手順でRemote Developmentをインストールしてください

※Remote - SSHなど必要な関連ツールも、Remote Developmentをインストールすると同時にインストールされます。

④RaspberryPiに接続

下図の手順で、接続するSSHサーバ = RaspberryPiを選んでください(下図の場合「raspi」)

新たにウインドウが開き、プラットフォーム選択を求められるので、Linuxを選ぶ

公開鍵認証のパスワードを求められるので、入力してEnterを押す

初回接続は時間が掛かるので、しばらく待つ。
成功すると、下図の赤枠をクリックしてRaspberryPi内のファイルにアクセスできる

⑤RaspberryPi内にコードを作成

ここから先はコンソールでも良いですが、GUIで操作する前提で記載を進めます。

・空ファイルの作成
「File」→「New File」で空のファイルを作成します

・コード内容の記載
例えば、以下のようなPythonコードを記載します(numpyで標準偏差を求めて表示)

・コードの保存
「File」→「SaveAs」→保存パスを指定→「OK」

・コンソールから実行してみる
「Terminal」→「New Terminal」でコンソールを開き

コードのあるフォルダに移動し、

python3 test.py

でPythonコードを実行

正常に結果がコンソール出力されていることが分かります。

⑥作成したコードをデバッグ実行

なんとVSCodeのGUIで、コードのデバッグまで出来てしまいます。
ブレークポイントで停止もできるので、開発効率が上がること間違いなしです!

・Pythonリンターのインストール
既にPCローカルでインストールしている場合も、「install in SSH:[ホスト名]」をクリックしてRaspberry Pi内にもPythonリンタをインストールします。

インストールが終わると「Reload Required」と出てくるので、クリックして再起動

・作業用フォルダ(通常はコードのあるフォルダ)を開く

・デバッグの実行
デバッグしたいコードを開いたのち、下記の操作を実行

コンソールが開き、デバッグが実行されます

・ブレークポイントの動作確認
下図のようにブレークポイントで処理を止め、変数内容の確認も可能です。

以上で、VSCodeでRaspberryPi内のコードを遠隔デバッグすることができました。
GUIでサクサク開発できる環境が整い、個人的には満足の結果です!

追記:pipでインストールしたライブラリのimport時にエラーが出るとき

RaspberryPi側にpyenvで環境構築した場合、
pipでインストールしたライブラリのimport時に下記エラーが出ます。

エラー内容:Unable to import 'bluepy' pylint(import-error)

原因

こちらに記載されているように、
VSCodeでデバッグ時に参照するPythonと、pyenvのPythonの場所が違うことが原因と思われます

対処法

/home/[ユーザ名]/.vscode-server/extensions/ms-python.python-‥/pythonFiles/.vscode
にある
settings.json
を開き、下記最後の1行を追加

settings.json
{
    //
    //元々の記載
    //
    "python.pythonPath": "[pyenvのPythonの場所]"
}

※pyenvのPythonの場所は、デフォルトでは
/home/[ユーザ名]/.pyenv/shims/python
のはずです
※既にpython.pythonPathが記載されていた場合、コメントアウトして新たに1行追加してください

それでもエラーが出る場合

⑥で開いた作業用フォルダ内に「.vscode」フォルダを作り、
フォルダ内に下記settings.jsonファイルを作成

settings.json
{
    "python.pythonPath": "[pyenvのPythonの場所]"
}

これで強制的にpyenvのPythonが実行されるはずです