Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
25
Help us understand the problem. What is going on with this article?
@sinsi404

VSCodeでPythonのリモートデバッグ

More than 1 year has passed since last update.

はじめに

PyCharm ProfessionalのRemote Development機能は非常に便利だが、個人的にエディタとしては非常に使いにくい。これをVSCodeでやれる方法はないかと探したところ、実装予定はありそうだが未実装なので、リモートデバッグで我慢することにした。その際の設定に苦労したので備忘として残しておく。

やり方

  1. SSH FSを使ってワークスペースにリモートのディレクトリをマウントする
  2. リモートデバッグ時の設定でファイルのマッピングを、リモートディレクトリ→マウントしたディレクトリとする
  3. リモートでデバッグ対象のpythonスクリプトを実行する(デバッガの接続待機)
  4. VSCodeからリモートのデバッグ対象プロセスにアタッチする

SSH FSの使い方は、
Visual Studio CodeでSSHごしにファイルを編集する

リモートデバッグの基本は、
VSCodeでのPythonのデバッグと、Dockerコンテナ環境に接続してリモートデバッグする方法

を参照のこと

設定

設定したい内容は、
リモートディレクトリ
user_name@192.168.0.x:/home/user_name/projects/project_name
配下のコードをVSCodeで編集しながらデバッグする

SSH FSの設定

project_name.sshfs.jsonc
{
    "label": "project_name@ubuntu",
    "root": "/home/user_name/projects/project_name",
    "host": "192.168.0.x",
    "port": 22,
    "username": "user_name",
    "password": true
}

リモートデバッグの設定

launch.json
{
            "name": "Python Attach to project_name@ubuntu-ml",
            "type": "python",
            "request": "attach",
            "pathMappings": [
                {
                    "localRoot": "ssh://project_name",
                    "remoteRoot": "/home/user_name/projects/project_name"
                }
            ],
            "port": 3000,
            "host": "192.168.0.x"
        }

"pathMappings"の"localRoot"には、
Ctrl+Shift+PからOpen Workspace Configuration Fileで見られる、folders内、SSH FSのuriを指定する。

デバッグ用スニペット

リモートで実行時に、第一引数をdebugとするとデバッグ用にデバッガの接続を待機する。リンク先より拝借。

if __name__ == '__main__':
    if (len(sys.argv) > 1) and (sys.argv[1] == "debug"):
        import ptvsd
        print("waiting...")
        ptvsd.enable_attach(address=('0.0.0.0', 3000))
        ptvsd.wait_for_attach()
    main()

詰まったところ

Remote WorkspaceでSFTPを使う場合、"pathMappings"を認識させる方法が分からなかった。

・"pathMappings"は"/path/to/remote" : "/path/to/local"
と書いても認識してくれない

25
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
sinsi404

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
25
Help us understand the problem. What is going on with this article?