VS Code 帶參數 debug python程式

VS Code 帶參數 debug python程式

問題描述

學姊最近問我要怎麼在 VS Code 帶參數去debug python程式,什麼是帶參數執行 Python 程式呢?也就是在 Python 腳本檔依據執行指令的參數來決定程式要跑一個環境、哪一個資料集等等,是一個非常好用的功能。

學姊遇到的問題是如果在終端機上下 python main.py –e 1000 –d datasets,沒辦法在 VS Code 上 debug,原因是因為沒有使用 VS Code debugger,就算用了,也無法指定參數內容,當跑到要吃參數的程式片段的時候會因此拋錯。

解決方法

首先,我先準備了一個範例程式碼 main.py,內容如下,在這個範例檔案會吃兩個參數,一個是 -e 迭代次數、另一個 -d 資料集,我使用了 argparse 套件來吃參數,用法在此不介紹。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

import argparse

def parse_args():
parser = argparse.ArgumentParser(description='a simple demo of argparse')

# epoch argument
parser.add_argument('-e', type=int, required=True)

# datasets path argument
parser.add_argument('-d', type=str, required=True)

# resolve arguments
args = parser.parse_args()

return args


if __name__ == '__main__':
args = parse_args()
epoch = args.e
datasets_path = args.d
print(epoch)
print(datasets_path)

點開 VS Code 左側的 Run and debug,再點選 create a lauch.json file。

Image

接著會跳出 Prompt,選擇 Python File。
Image

點選後,VS Code 就會在當前的資料夾底下,建立一個 .vscode 的資料夾,裡面放 lauch.json,我會要在 configurations 裡面多新增一個 key 叫做 args,裡面填寫我們要執行的參數值,要注意的地方是,參數跟值要分開來寫,舉例來說,原本用終端機執行 python 的指令是 python -e 1000 -d datasets,args就要這樣寫 [“-e”, “1000”, “-d”, “~/test/datasets.csv”]。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"args": ["-e", "1000", "-d", "~/test/datasets.csv"],
"justMyCode": true
}
]
}

Image

為何要這樣設定的原因是因為 VS Code 可以根據我們的參數設定來執行、除錯程式。

點開 VS Code 左側的 Run and debug,按下綠色 Play 按鈕就可以開始 debug,我是在程式碼的第 23 行下斷點,在 watch 監控 epoch、datasets_path 這兩個變數的內容,可以看到我們在 launch.json 設定的參數。

Image

參考文件

https://code.visualstudio.com/docs/cpp/launch-json-reference

在 Visual Studio Code 遠端開發(客戶端篇)

在 Visual Studio Code 遠端開發(客戶端篇)

研究所有時候要跑機器學習的東西,但用自己的主機跑又很容易炸裂,每次遠端登入進去 lab 的電腦又很麻煩,我剛好看得到學長姐用 vscode 遠端回去 lab 電腦,我想說自己也來玩玩看,以下是客戶端的步驟,照著步驟操作後,就可以在本地端 vscode 做程式開發,實際算力是用 lab 的電腦。

Visual Studio Code 遠端開發設定

下載 Remote SSH 插件

在 VS Code IDE 側欄找到 Extensions,輸入 “Remote-SSH”,然後按下安裝鍵。
Image

SSH 連線資訊設定

在 VS Code IDE 左下角有一個 >< 的符號,找到後按下去,IDE 會跳出一個 prompt,輸入伺服器的 SSH 連線資訊,格式為 [帳號]@[IP位址 / 主機網域名稱] (不用打中括號)。

Image

Image

輸入完後,在在 VS Code IDE 右下角會挑出 Open Config,上一步的操作會在家目錄 ~/.ssh 中建立一個 config 檔案,裡面會紀錄我們的電腦跟其他主機的 SSH 連線資訊。
Image

打開後長這樣,裡面可以自行更改 IP 位址、Port 號、SSH 連線用的私鑰,Host 預設是我剛剛輸入的 IP位址,為了方便我識別,我改成 LAB706,所以 Host 是可以自行更改成喜歡的別名,但 HostName 不行,要輸入正確的IP位址或主機網域名稱。

Image

SSH 連線到遠端主機

確認沒問題後,就可以關閉,再次按下 VS Code IDE 左下角有一個 >< 的符號,選擇 LAB706,就可以登入到遠端伺服器。
Image

VS Code 將提示你輸入 SSH 密碼,輸入後即可連接到伺服器。

Image

連進來後,沒有跳出錯誤訊息的 prompt,且右下角顯示 LAB706,代表連線成功,那要怎麼看到遠端主機上的檔案呢?按下 VS Code Explorer,再按 Open folder,就可以看得到遠端主機上的資料夾、跟檔案,接下來可以開始做事了。

Image