VSCodeの拡張機能SSH FSをインストール
エクスプローラに SSH FILE SYSTEMS が追加されるので右クリックしてCreate a SSH FS configuration
Windowの場合PuTTYが必要とのこと。

Nameは任意
Locationは設定ファイルの場所
GrobalはVsCode自体に設定される。
Workspaceはディレクトリ単位、ディレクトリを開いておく必要がある。
環境毎にWorkspaceを用意する方がいいかも。

Host:raspberrypi3plus.local or IPアドレス
Username:pi
Password:[ラズベリーパイに設定されているパスワード]
Root:接続時のトップディレクトリ
Username, Passwordは設定しない場合接続時に入力する(password: true を設定する必要あり)。
Workspaceに保存した場合.vscode/settings.jsonファイルが作成される。
1 2 3 4 5 6 7 8 9 10 | { "sshfs.configs" : [ { "host" : "raspberrypi3plus.local" , "name" : "pi" , "username" : "pi" , "password" : true } ] } |
接続したい場合はSSH FILE SYSTEMSの接続対象を右クリック → Connect as Workspqce folder
Raspberry PI上にPythonプログラムを作成する
SSHなどで接続してラズパイ上で作成してもいいがここまでの手順でVSCode上から作成することもできるようになっている。
サンプルコード
/home/pi/project/dtest/main.py (Raspberry pi)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import sys from flask import Flask app = Flask(__name__) @app.route( "/" ) def index(): msg = "Hello remote debug!" return msg if __name__ == '__main__' : # デバッグ時の処理 if (len(sys.argv) > 1) and (sys.argv[1] == "debug" ): import ptvsd print( "Waiting attach debugger..." ) ptvsd.enable_attach(address=( '0.0.0.0' , 30001)) ptvsd.wait_for_attach() app.run(host= "0.0.0.0" , port=3000, debug=False) |
debug=TrueにしておくとFlaskのデバッグ機能と競合してうまく動作しない。
動作確認
ラズパイにSSHなどで接続して以下のコマンドssh pi@raspberrypi3plus.local
cd project/dtest/
python3 main.py
cd project/dtest/
python3 main.py
ラズパイ上でブラウザを開いて
http://127.0.0.1:3000/
へアクセス
あるいは同一ネットワーク上のPCから
http://raspberrypi3plus.local:3000/
へアクセス(IPアドレス指定だとうまくいかないかも)
ライブラリが足りていない場合インストール(恐らく初期状態だとptvsdがない)
pip3 install ptvsd
"Hello remote debug!"
と表示されたら成功
参考
Visual Studio Codeからリモートデバッグする。
.vscode/launch.json に以下を追記。なければ作成。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | { "version" : "0.2.0" , "configurations" : [ { "name" : "Python: Current File" , "type" : "python" , "request" : "attach" , "pathMappings" : [ { "remoteRoot" : "/home/pi/project" } ], "port" : 30001, "host" : "raspberrypi3plus.local" } ] } |
localrootは恐らく
ssh://[設定名]/
になる。
Ctrl(Cmd)+Shift+P → Open Workspace Configuration FileのSSF FSから確認できる。
remoteRoot はラズパイ上へのルートパス
恐らくSSHで接続した時のRootを指定する。
portはデバッグ用のポート番号。
ptvsd.enable_attach(address=('0.0.0.0', 30001)) で指定している(使用されていない)ポート番号。
host
ホスト名かIPアドレスを指定。
引数debugを付与してラズパイのpythonプログラム起動。
python3 main.py debug
return msgあたりにブレイクポイントを貼ってデバッグ実行(F5)
http://raspberrypi3plus.local:3000/
にアクセスして確認。

参考
https://qiita.com/sinsi404/items/dd0afe1ed038d542d1f1
https://qiita.com/informationsea/items/5c9f05c81a41fb885460
https://donjayamanne.github.io/pythonVSCodeDocs/docs/debugging_remote-debugging/
https://community.plot.ly/t/code-in-if---name-----main---runs-twice/5868