python run和debug程序的操作過程
前言:
有的時候我們有這樣的需求,需要再vscode里面調(diào)試python代碼,但是我們還需要為不同的文件設(shè)置不同的調(diào)試參數(shù),如設(shè)置python解釋器,設(shè)置輸入?yún)?shù)等,下面說如何再vscode進(jìn)行上述的調(diào)試和運行。
對于運行來說,雖然可以使用命令行設(shè)置解釋器和輸入?yún)?shù),但是呢,當(dāng)輸入?yún)?shù)很大的時候,每次輸入也是很麻煩,直接寫道json文件里面是一勞永逸了。
一、文件生成



之后就會自動在當(dāng)前工作空間下創(chuàng)建一個.vscode/launch.json的文件

二、文件配置
1.設(shè)置運行參數(shù)和解釋器
{
"version": "0.2.0",
"configurations": [
{
"name": "MRTA_DRL: t1.py (args)",
"type": "debugpy",
"request": "launch",
// 1) 要跑的 python 文件:建議寫死入口腳本
"program": "${workspaceFolder}/t1.py",
// 2) 工作路徑(相當(dāng)于你在終端 cd 到哪里再執(zhí)行)
// "cwd": "${workspaceFolder}",
// 3) 運行參數(shù):等價于 python train.py --config xxx ...
"args": ["--config", "simple_het", "--seed", "0"],
// 4) 指定解釋器(兩種方式二選一)
// 方式A:直接寫解釋器絕對路徑(最穩(wěn))
"python": "/home/yzh/miniconda3/envs/MRTA_DRL/bin/python",
// 方式B:不寫 python,改用 VSCode 里選的解釋器(推薦日常)
// -> Ctrl+Shift+P 選擇 “Python: Select Interpreter”
// -> 然后刪掉本行 "python": "...",
"console": "integratedTerminal",
}
]
}t1.py的代碼如下。可以看出--config這個參數(shù)是必須的,但是我可以直接運行這個程序??旖萱I就是ctrl+F5。
# args_demo.py
import argparse
def parse_args():
parser = argparse.ArgumentParser(description="MRTA Training Arguments")
parser.add_argument(
"--config",
type=str,
required=True,
help="config name, e.g. simple_het"
)
parser.add_argument(
"--seed",
type=int,
default=0,
help="random seed"
)
return parser.parse_args()
if __name__ == "__main__":
args = parse_args()
print("===== Parsed Arguments =====")
print(f"config = {args.config}")
print(f"seed = {args.seed}")那么我直接按住快捷鍵,他是怎么知道我運行的是那一個文件呢?是因為下圖箭頭表明的位置已經(jīng)指明了。

運行結(jié)果如下

同理,我可以按住F5,直接調(diào)試這個程序

2.設(shè)置工作空間路徑
那么如何調(diào)試工作空間內(nèi)部文件夾里面的python文件呢?一共有兩種辦法,第一種指名絕對路徑,第二種重構(gòu)工作空間路徑。
文件樹如下

(1)第一種
這里我們指名了
"program": "${workspaceFolder}/test_one/t2.py",
所以可以直接找到這個文件。
{
"version": "0.2.0",
"configurations": [
{
"name": "MRTA_DRL: t1.py (args)",
"type": "debugpy",
"request": "launch",
// 1) 要跑的 python 文件:建議寫死入口腳本
"program": "${workspaceFolder}/t1.py",
// 2) 工作路徑(相當(dāng)于你在終端 cd 到哪里再執(zhí)行)
// "cwd": "${workspaceFolder}",
// 3) 運行參數(shù):等價于 python train.py --config xxx ...
"args": ["--config", "simple_het", "--seed", "0"],
// 4) 指定解釋器(兩種方式二選一)
// 方式A:直接寫解釋器絕對路徑(最穩(wěn))
"python": "/home/yzh/miniconda3/envs/MRTA_DRL/bin/python",
// 方式B:不寫 python,改用 VSCode 里選的解釋器(推薦日常)
// -> Ctrl+Shift+P 選擇 “Python: Select Interpreter”
// -> 然后刪掉本行 "python": "...",
"console": "integratedTerminal",
},
{
"name": "MRTA_DRL: t2.py (args)",
"type": "debugpy",
"request": "launch",
// 1) 要跑的 python 文件:建議寫死入口腳本
"program": "${workspaceFolder}/test_one/t2.py",
// 2) 工作路徑(相當(dāng)于你在終端 cd 到哪里再執(zhí)行)
// "cwd": "${workspaceFolder}",
// 3) 運行參數(shù):等價于 python train.py --config xxx ...
"args": ["--config", "simple_het", "--seed", "0"],
// 4) 指定解釋器(兩種方式二選一)
// 方式A:直接寫解釋器絕對路徑(最穩(wěn))
"python": "/home/yzh/miniconda3/envs/MRTA_DRL/bin/python",
// 方式B:不寫 python,改用 VSCode 里選的解釋器(推薦日常)
// -> Ctrl+Shift+P 選擇 “Python: Select Interpreter”
// -> 然后刪掉本行 "python": "...",
"console": "integratedTerminal",
},
]
}(2)第二種重構(gòu)工作空間路徑
// 1) 要跑的 python 文件:建議寫死入口腳本
"program": "${workspaceFolder}/t2.py",
// 2) 工作路徑(相當(dāng)于你在終端 cd 到哪里再執(zhí)行)
"cwd": "${workspaceFolder}/test_one",
{
"version": "0.2.0",
"configurations": [
{
"name": "MRTA_DRL: t1.py (args)",
"type": "debugpy",
"request": "launch",
// 1) 要跑的 python 文件:建議寫死入口腳本
"program": "${workspaceFolder}/t1.py",
// 2) 工作路徑(相當(dāng)于你在終端 cd 到哪里再執(zhí)行)
// "cwd": "${workspaceFolder}",
// 3) 運行參數(shù):等價于 python train.py --config xxx ...
"args": ["--config", "simple_het", "--seed", "0"],
// 4) 指定解釋器(兩種方式二選一)
// 方式A:直接寫解釋器絕對路徑(最穩(wěn))
"python": "/home/yzh/miniconda3/envs/MRTA_DRL/bin/python",
// 方式B:不寫 python,改用 VSCode 里選的解釋器(推薦日常)
// -> Ctrl+Shift+P 選擇 “Python: Select Interpreter”
// -> 然后刪掉本行 "python": "...",
"console": "integratedTerminal",
},
{
"name": "MRTA_DRL: t2.py (args)",
"type": "debugpy",
"request": "launch",
// 1) 要跑的 python 文件:建議寫死入口腳本
"program": "${workspaceFolder}/t2.py",
// 2) 工作路徑(相當(dāng)于你在終端 cd 到哪里再執(zhí)行)
"cwd": "${workspaceFolder}/test_one",
// 3) 運行參數(shù):等價于 python train.py --config xxx ...
"args": ["--config", "simple_het", "--seed", "0"],
// 4) 指定解釋器(兩種方式二選一)
// 方式A:直接寫解釋器絕對路徑(最穩(wěn))
"python": "/home/yzh/miniconda3/envs/MRTA_DRL/bin/python",
// 方式B:不寫 python,改用 VSCode 里選的解釋器(推薦日常)
// -> Ctrl+Shift+P 選擇 “Python: Select Interpreter”
// -> 然后刪掉本行 "python": "...",
"console": "integratedTerminal",
},
]
}到此這篇關(guān)于python run和debug程序的操作過程的文章就介紹到這了,更多相關(guān)python run和debug程序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談TensorFlow中讀取圖像數(shù)據(jù)的三種方式
這篇文章主要介紹了淺談TensorFlow中讀取圖像數(shù)據(jù)的三種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
Python運維之獲取系統(tǒng)CPU信息的實現(xiàn)方法
今天小編就為大家分享一篇Python運維之獲取系統(tǒng)CPU信息的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06
flask框架配置mysql數(shù)據(jù)庫操作詳解
這篇文章主要介紹了flask框架配置mysql數(shù)據(jù)庫操作,結(jié)合實例形式詳細(xì)分析了flask框架配置mysql數(shù)據(jù)庫及連接訪問等相關(guān)操作技巧,需要的朋友可以參考下2019-11-11
Python bytes轉(zhuǎn)string實現(xiàn)方式
本文介紹了Python中使用str()函數(shù)和bytes的decode()函數(shù)將bytes類型轉(zhuǎn)換為string類型的方法,并通過舉例說明了具體操作步驟2026-04-04
Django Sitemap 站點地圖的實現(xiàn)方法
這篇文章主要介紹了Django Sitemap 站點地圖的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
Django 開發(fā)環(huán)境與生產(chǎn)環(huán)境的區(qū)分詳解
這篇文章主要介紹了Django 開發(fā)環(huán)境與生產(chǎn)環(huán)境的區(qū)分詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Django項目中添加ldap登陸認(rèn)證功能的實現(xiàn)
這篇文章主要介紹了Django項目中添加ldap登陸認(rèn)證功能的實現(xiàn),詳細(xì)介紹了django-auth-ldap的使用方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-04-04

