VSCodeでWindowsからリモートのUbuntu24.04上にあるPythonコードをデバッグする

Visual Studio Codeは予約語の補間をはじめとする様々な機能を備えた統合開発環境です。Pythonを勉強しようと思った際に、手元にあるWindowsからリモートのUbuntu24.04上のPythonコードをデバッグできたら…と思い立ち、試してみました。

![2024-11-11 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3919880/3ebeda14-cfbe-8870-f92c-1831065f1555.png)

### 参考にしたサイト

https://net-newbie.com/2020/04/11/vscode-python-remote-debug/

## Windows上での準備

### Visual Studio Codeのインストール

- Visual Studio Codeをインストールします
- Windows上のVisual Studio Codeに必要なパッケージをインストールします
  - Japanese Language Pack
  - Python
  - Remote Development

![2024-11-11 (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3919880/3980aea3-b545-97bd-29d5-19d31edb25f1.png)

![2024-11-11 (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3919880/2da583fd-3a7b-4173-f0e6-e7e99aef16bd.png)

![2024-11-11 (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3919880/67e29d9a-eba7-51cf-b007-4ac2570d6c27.png)

### Windows標準のSSHでUbuntuへ接続できるようにする

こちらで解説した手順を基に、Windows標準のssh機能を利用し(※Not-PuTTY)、Ubuntuへパスワード無しでログインできるようにします。今回は "Ubu24" という名前で設定を書きました。

https://qiita.com/xtrizeShino/items/30dca87bc0789fcacfab

私のWindowsのユーザー名が "ixiv2" なので `C:\Users\ixiv2\.ssh\config` に以下のように記載しました。`IdentityFile`にはsshの秘密鍵を指定します。公開鍵は、Ubuntu24.04の`~/.ssh/authorized_keys`に追記します。これでパスワードなしで、サーバー名を指定するだけでログインできるようになっていると思います。

```
Host Ubu24
	HostName 192.168.10.131
	User shino
	IdentityFile ~/.ssh/id_rsa 
```

![2024-11-11 (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3919880/5ad7e737-9c81-7e42-c2af-be351572948a.png)

## UbuntuにVisual Studio Codeの拡張機能をインストールする

前手順では、Windows上で動作するVisual Studio Codeに拡張機能を追加しました。リモートで開発するには、次に、ssh接続したUbuntuサーバー側にもVisual Studio Codeの拡張機能をインストールする必要があります。

### Visual Studio CodeでUbuntuにリモート接続する

まず、Windows上で動作しているVisual Studio Codeを、Ubuntuへ接続します。画面左下の「><」マークをクリックすると、サーバー名のリストが出てきますので、サーバーを選択し(ここでは`Ubu24`)、OSタイプにLinuxを選択すると、ssh接続が有効になっている新しいVisual Studio Codeのウィンドウが開きます。ターミナルがUbuntuのものになっていることを確認してください。

![2024-11-11 (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3919880/ce373512-877d-1f32-affc-5c3d5cdcefd8.png)

![2024-11-11 (9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3919880/4aeaeec6-157f-6e2a-c987-50b7bbe9912d.png)

![2024-11-11 (10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3919880/5a74df81-298b-bb13-382c-de3c460c5fa9.png)

### 拡張機能をインストールする

拡張機能を開き、開発に必要なパッケージをUbuntu側にインストールします。このとき `Install in Ubu24`とUbuntuのホスト名が表示されていることを確認しておきましょう。

  - Japanese Language Pack
  - Python

![2024-11-11 (11).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3919880/5247b0cd-3945-4a24-23f1-699138460b8d.png)

![2024-11-11 (12).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3919880/cf8fdbf4-247f-fdfd-bfbd-354d7e231bbd.png)

## 早速デバッグしてみよう！

Ubuntuのホームディレクトリ上に作業用の`testbox`という名前のフォルダを作成し、Visual Studio Codeの「フォルダーを開く」から対象のフォルダを開きます。

![2024-11-11 (14).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3919880/1c762a31-c46e-4073-ae13-825bd8448c09.png)

![2024-11-11 (16).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3919880/6c53fc15-f587-db6b-4172-cb919f2ac876.png)

`test.py`を作成し、Pythonコードを書きます。またターミナルで、`python3 -m venv testbox` を実行し、Pythonの仮想環境を作成します。`. ./testbox/bin/activate`を実行し仮想化環境に入ります。この仮想環境の中でPythonのデバッグをします。

![2024-11-11 (17).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3919880/feaee34a-1fcc-fd72-6fc3-9b9330061d42.png)

ブレークポイントを設定し

![2024-11-11 (19).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3919880/ee5bd61a-fb19-6e2b-9970-62f41a162c4a.png)

「実行」-「デバッグの開始」を選択し、デバッガとして「Python Debugger」を選択します。

![2024-11-11 (22).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3919880/70d62ffd-55a7-449c-0dfc-494092522ce9.png)

![2024-11-11 (23).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3919880/1df3f8f7-9cc6-bbf1-21fc-73f64ce46b3e.png)

ブレークポイントで止まりましたね！

これであとはソースコードを書くだけです！