要熟悉這些常規功能,請查看VS Code調試文章。本文僅討論那些特定於Python的注意事項。html
要選擇調試配置,請選擇邊欄中的調試視圖,而後從下拉列表中選擇一個選項:python
在調試時,狀態欄顯示左下角的當前配置,當前的調試解釋器位於右側。選擇配置會顯示列表,您能夠從中選擇不一樣的配置:linux
默認狀況下,調試器使用與python.pythonPath
VS Code其餘功能相同的設置。要使用不一樣的解釋器,請pythonPath
在調試器設置中設置該值。或者,在狀態欄上選擇指定的解釋器以選擇不一樣的解釋器。git
注:調試器設置不支持相對路徑,包括依賴主
python.pythonPath
設置時。要解決此問題,請使用環境變量,或者建立一個變量,例如${workspaceFolder}
解析到您的項目文件夾,而後在該路徑中使用該變量,如in"python.pythonPath": "${workspaceFolder}/venv/bin/python"
。github
要查看全部配置,請launch.json
經過選擇配置下拉列表旁邊的齒輪圖標打開:golang
下一節將介紹默認或標準的「Python:當前文件」配置。本文還介紹了調試特定應用程序類型下的其餘配置。正則表達式
注意:若是您想嘗試新的實驗性調試器,請參閱Issue 538(GitHub)上的說明。shell
標準配置爲launch.json
:編程
{ "name": "Python: Current File", "type": "python", "request": "launch", "program": "${file}", }
如下各節介紹各類設置的自定義配置。json
name
提供出如今VS Code下拉列表中的調試配置的名稱。
type
標識要使用的調試器的類型; 將此設置留給python
Python代碼。
request
指定開始調試的模式:
launch
:在中指定的文件上啓動調試器 program
attach
:將調試器附加到已經運行的進程。有關示例,請參閱遠程調試。program
提供python程序入口模塊的徹底限定路徑。推薦值爲${file}
,它使用編輯器中的活動文件。可是,對於具備多個文件的程序,您能夠指定程序的啓動文件。例如:
"program": "/Users/Me/Projects/PokemonGo-Bot/pokemongo_bot/event_handlers/__init__.py",
您還能夠依賴工做區根目錄中的相對路徑。例如,若是根是/Users/Me/Projects/PokemonGo-Bot
那麼你可使用如下內容:
"program": "${workspaceFolder}/pokemongo_bot/event_handlers/__init__.py",
pythonPath
指向Python解釋器用於調試目的。若是未指定,則默認爲python.pythonPath
設置中標識的解釋器,這至關於使用該值${config:python.pythonPath}
。要使用不一樣的解釋器,請改成指定其路徑。
您能夠經過將指定特定於平臺的路徑pythonPath
命名的父對象中osx
,windows
或者linux
。例如,PySpark的配置使用如下值:
"osx": { "pythonPath": "^\"\\${env:SPARK_HOME}/bin/spark-submit\"" }, "windows": { "pythonPath": "^\"\\${env:SPARK_HOME}/bin/spark-submit.cmd\"" }, "linux": { "pythonPath": "^\"\\${env:SPARK_HOME}/bin/spark-submit\"" },
args
指定傳遞給Python程序的參數,例如:
"args": [ "--quiet", "--norepeat" ],
stopOnEntry
設置爲true時,在調試程序的第一行中斷開調試器。若是省略(默認)或設置爲false,則調試器將程序運行到第一個斷點。
console
指定如何顯示程序輸出。
值 | 顯示輸出的地方 |
---|---|
"none" |
VS代碼調試控制檯 |
"integratedTerminal" (默認) |
VS代碼集成終端 |
"externalTerminal" |
獨立控制檯窗口 |
cwd
指定調試器的當前工做目錄,它是代碼中使用的任何相對路徑的基礎文件夾。若是省略,默認爲${workspaceFolder}
(在VS代碼中打開的文件夾)。
做爲一個例子,說${workspaceFolder}
包含一個py_code
文件夾包含app.py
,和一個data
文件夾包含salaries.csv
。若是啓動調試器py_code/app.py
,則數據文件的相對路徑根據如下值而變化cwd
:
CWD | 數據文件的相對路徑 |
---|---|
省略或 ${workspaceFolder} |
data/salaries.csv |
${workspaceFolder}/py_code ) |
../data/salaries.csv |
${workspaceFolder}/data |
salaries.csv |
debugOptions
一系列可能包含如下內容的附加選項:
選項 | 描述 |
---|---|
"RedirectOutput" (默認) |
使調試器將程序的全部輸出打印到VS Code調試輸出窗口中。若是省略此設置,則全部程序輸出不顯示在調試器輸出窗口中。該選項在使用時一般會被省略,"console": "integratedTerminal" 或者"console": "externalTerminal" 由於不須要在調試控制檯中複製輸出。 |
"DebugStdLib" |
啓用標準庫函數的調試。 |
"Django" |
激活特定於Django Web框架的調試功能。 |
"Sudo" |
與...一塊兒使用時"console": "externalTerminal" ,容許調試須要提高的應用程序。捕獲密碼須要使用外部控制檯。 |
"Pyramid" |
在調試金字塔應用程序時使用。 |
env
爲除調試器始終繼承的系統環境變量以外的調試器進程設置可選的環境變量。
envFile
包含環境變量定義的文件的可選路徑。請參閱配置Python環境 - 環境變量定義文件。
配置下拉菜單爲常規應用程序類型提供了各類不一樣的選項:
組態 | 描述 |
---|---|
PySpark | 使用PySpark而不是默認解釋器運行程序,使用pythonPath 前面在pythonPath選項下顯示的特定於平臺的值。 |
Python模塊 | 替換program 設置"module": "module.name" 以調試特定模塊。使用此配置時,請將該值替換爲所需的模塊名稱。 |
集成終端/控制檯 | 將"console": "integratedTerminal" 選項添加到標準配置。 |
外部終端/控制檯 | 將"console": "externalTerminal" 選項添加到標準配置。 |
Django的 | 指定"program": "${workspaceFolder}/manage.py" 並"args": ["runserver", "--noreload", "--nothreading"] 添加「Django」和「RedirectOutput」 debugOptions 。請注意,在調試時不能自動從新加載Django應用程序。要調試Django HTML模板,請添加斷點templates 。 |
燒瓶 | 請參閱下面的Flask調試。 |
金字塔 | 刪除program ,添加"args": ["${workspaceFolder}/development.ini"] 並添加「金字塔」和「重定向輸出」 debugOptions 。 |
沃森 | 指定"program": "${workspaceFolder}/console.py" 和"args": ["dev", "runserver", "--noreload=True"] |
Scrapy | 指定"program": "~/.virtualenvs/scrapy/bin/scrapy" ,添加"console": "integratedTerminal" 選項並添加"args": ["crawl", "specs", "-o", "bikes.json"] 。 |
附加(遠程調試) | 請參閱如下遠程調試。 |
遠程調試和Google App Engine還須要具體步驟。有關調試單元測試(包括nosetest)的詳細信息,請參閱單元測試。
要調試須要管理員權限的應用程序,請在中使用"console": "externalTerminal"
幷包含「Sudo」 debugOptions
。
{ "name": "Flask", "type": "python", "request": "launch", "stopOnEntry": false, "pythonPath": "${config:python.pythonPath}", "module": "flask", "cwd": "${workspaceFolder}", "env": { "FLASK_APP": "${workspaceFolder}/app.py" }, "args": [ "run", "--no-debugger", "--no-reload" ] },
正如你所看到的,這個配置指定"stopOnEntry": false
,"env": {"FLASK_APP": "${workspaceFolder}/app.py"}
和"args": ["run", "--no-debugger","--no-reload"]
。該"module": "flask"
屬性被用來代替program
。
遠程調試容許您在VS代碼本地執行一個程序,同時在遠程計算機上執行它。在這種狀況下,必須在兩臺計算機上都有源代碼。
在開發和遠程計算機上,安裝ptvsd 3.0.0(3.0.0
徹底版本- 更高版本尚不支持#514)。
在兩臺計算機的源代碼中,添加如下行,用適當的密碼替換my_secret以驗證遠程調試,並用合適的IP地址(或)和端口號替換地址localhost
:
import ptvsd ptvsd.enable_attach("my_secret", address = ('0.0.0.0', 3000)) # Enable the line of source code below only if you want the application to wait until the debugger has attached to it #ptvsd.wait_for_attach()
僅在遠程計算機上,取消註釋上面的最後一行。您但願在開發機器上保留註釋行,以確保兩臺機器上的源代碼與行符合。
啓動遠程程序。
選擇附加(遠程調試)(下面)配置,而後修改remoteRoot
爲指向該程序的遠程計算機上的位置,並修改host
,port
以及secret
在上面添加的源代碼中的值匹配。
{ "name": "Attach (Remote Debug)", "type": "python", "request": "attach", "localRoot": "${workspaceFolder}", "remoteRoot": "${workspaceFolder}", "port": 3000, "secret": "my_secret", "host": "localhost" }
經過SSH進行調試
視窗:
127.0.0.1
地址(這是遠程SSH服務器用於創建隧道的地址)。Linux的:
ssh -L sourceport:localhost:destinationport user@remoteaddress
接下來,驗證您能夠在SSH會話中看到提示。而後打開VS Code並將端口配置爲顯示在Tunnels屏幕上的調試端口。
最後,啓動程序並按照上一節所述附加調試器。
Google App Engine本身啓動一個應用程序,所以在VS Code調試器中啓動它不是直接可能的。相反,咱們須要在應用中使用ptvsd,而後以容許VS Code附加其調試器的模式啓動Google App Engine。
下載ptvsd並將其文件解壓縮到工做文件夾中的ptvsd文件夾中。(若是使用不一樣的文件夾,請修改pydev_startup.py
步驟4中建立的文件中的路徑)。
tasks.json
使用如下內容建立一個文件:
{ "version": "2.0.0", "tasks": [ { "label": "Launch Google App Engine", "command": "python", "type": "shell", "args": [ "/usr/local/google_appengine/dev_appserver.py", "--python_startup_script=${workspaceFolder}/pydev_startup.py", "--automatic_restart=no", "--max_module_instances=default:1", "${workspaceFolder}/app.yaml" ] } ] }
在Windows和Linux上,將第一項內容替換args
爲安裝Google App Engine的路徑(上面的源代碼中顯示的路徑適用於MacOS)。
在您的項目根目錄下建立一個名爲pydev_startup.py的文件,其中包含如下內容,並按照說明修改:
import sys import os #Assuming that pdvsd is located in the working folder sys.path.append(os.getcwd()) import ptvsd # Modify the secret and port number as desired; you're debugging locally so the values don't matter. # However, be sure the port is not blocked on your computer. ptvsd.enable_attach(secret = 'gae', address = ('0.0.0.0', 3000)) #The debug server has started and you can now use VS Code to attach to the application for debugging print("Google App Engine has started, ready to attach the debugger")
launch.json
使用Attach(遠程調試)配置做爲模板建立配置。確保祕密和端口值與上面源代碼中的內容匹配。
添加"preLaunchTask": "python"
到launch.json
。
從命令面板中,運行「 運行構建任務」命令。這將打開任務輸出窗口,您能夠在其中看到各類消息。
一旦看到消息「Google App Engine已啓動,準備好鏈接調試器」,請使用遠程調試配置啓動VS Code調試器。
在須要的地方設置斷點,而後啓動瀏覽器以啓動應用程序。
調試器可能沒法正常工做的緣由不少。調試控制檯常常會顯示具體緣由,但有兩個具體緣由以下:
python可執行文件的路徑不正確:請檢查pythonPath
用戶設置中的值。
觀察窗口中的表達式無效(請參閱下面的示例):清除Watch窗口中的全部表達式並從新啓動調試器。
Traceback (most recent call last): File ".../visualstudio_py_debugger.py", line 1646, in loop cmd() File ".../visualstudio_py_debugger.py", line 1918, in command_execute_code thread.run_on_thread(text, cur_frame, eid, frame_kind, repr_kind) File ".../visualstudio_py_debugger.py", line 1246, in run_on_thread self.schedule_work(lambda : self.run_locally(text, cur_frame, execution_id, frame_kind, repr_kind)) File ".../visualstudio_py_debugger.py", line 1238, in schedule_work self.unblock() File ".../visualstudio_py_debugger.py", line 1234, in unblock self._block_lock.release() RuntimeError: release unlocked lock
Python與數據挖掘__張良均著.pdf: https://itdocs.pipipan.com/fs/3843664-288859126
Python基礎教程(第3版.pdf: https://itdocs.pipipan.com/fs/3843664-288859043
Python學習手冊(第4版).pdf: https://itdocs.pipipan.com/fs/3843664-288859052
Python開發技術詳解-視頻教程.iso: https://itdocs.pipipan.com/fs/3843664-288864486
python絕技:運用python成爲頂級黑客.pdf: https://itdocs.pipipan.com/fs/3843664-288859062
《python開發技術詳解》.(周偉,宗傑).pdf: https://itdocs.pipipan.com/fs/3843664-288859058
《精通Python設計模式》源代碼文件.zip: https://itdocs.pipipan.com/fs/3843664-288859061
用Python作科學計算.pdf: https://itdocs.pipipan.com/fs/3843664-288859067
用Python寫網絡爬蟲.pdf: https://itdocs.pipipan.com/fs/3843664-288859070
精通Python設計模式 高清晰PDF.pdf: https://itdocs.pipipan.com/fs/3843664-288859111
蔣鑫Git權威指南帶書籤完整版.pdf: https://itdocs.pipipan.com/fs/3843664-288859076
Python核心編程(第3版)PDF高清晰完整中文版: https://itdocs.pipipan.com/dir/3843664-28077740-78f7a6/
Python網絡數據採集: https://itdocs.pipipan.com/dir/3843664-28077743-675289/
Python爬蟲開發與項目實戰: https://itdocs.pipipan.com/dir/3843664-28077746-2b41ac/
Python網絡編程第三版清晰帶源代碼: https://itdocs.pipipan.com/dir/3843664-28077749-d118f0/
beginning-python-3ed-master: https://itdocs.pipipan.com/dir/3843664-28077752-a37a35/
Python網絡爬蟲實戰: https://itdocs.pipipan.com/dir/3843664-28077755-8be101/
python能夠這樣學: https://itdocs.pipipan.com/dir/3843664-28077758-66613a/
python數據分析完整高清版+筆記+隨書源碼: https://itdocs.pipipan.com/dir/3843664-28077761-3bf2c9/
《精通Python設計模式》源代碼文件: https://itdocs.pipipan.com/dir/3843664-28077764-cd04ea/
精通Python網絡爬蟲 核心技術、框架與項目實戰: https://itdocs.pipipan.com/dir/3843664-28077767-48c194/
精通正則表達式 第三版本 帶書籤: https://itdocs.pipipan.com/dir/3843664-28077770-e48997/
Python灰帽子 黑客與逆向工程師的Python編程之道+中文+英文+代碼Code: https://itdocs.pipipan.com/dir/3843664-28128478-d57d64/