簡體   English   中英

如何在 Visual Studio Code 中調試詩歌應用程序

[英]How to debug Poetry application in Visual Studio Code

我有一個應用程序,我被授予使用詩歌寫作的所有權,我有一些 Python 經驗,但以前從未使用過詩歌。 我選擇的編輯器是 Visual Studio Code(在 Windows 上),但是我不知道在 launch.json 中要放什么,所以我可以調試應用程序。

如果我在應用程序文件夾中,我可以正常運行

app dostuff

或者

poetry run app dostuff

然而,這在應用程序之外似乎不可能,launch.json 想要一個絕對路徑,我做不到

C:\users\me\app\app dostuff

我收到一條錯誤消息,提示找不到該命令。 如果我不提供絕對路徑 VS Code 會將當前目錄放在 if 前面。 我確實嘗試指向 virtualenv 中生成的文件

C:\Users\me\AppData\Local\pypoetry\Cache\virtualenvs\app-py3.9\Scripts\app dostuff

這只是導致程序在終端中運行,沒有調試。

從詩歌環境運行代碼:

poetry shell
code .

請查看本教程: https://www.pythoncheatsheet.org/blog/python-projects-with-poetry-and-vscode-part-2/

我寫這篇文章對其他讀者來說有點詳盡,但 OP @Mant101 可能只需要執行第 (3.) 和 (4.) 部分並閱讀最后一部分“一些最終(重要)注釋”。

對於其他讀者,您可以閱讀帶編號部分的介紹段落和“一些最終(重要)說明”,然后按照編號步驟(希望)找到可行的解決方案。 編號步驟下方的項目符號(a)解釋該步驟正在做什么,(b)解釋該步驟的一些常見問題以及如何解決它們,或(c)提供一些額外的上下文。

假設

A.1。 您正在使用 Windows

A2。 VS 代碼已安裝

A.3。 VS Code 的默認終端是 PowerShell(我將交替使用“終端”和“PowerShell”)

A.4。 詩歌已安裝

A.5。 安裝了 Microsoft 來自 VS Code 擴展市場的 Python 擴展

  • 要檢查,請在 VS Code 中使用Ctrl + Shift + X打開擴展市場並搜索“python”。 如果已安裝,它將沒有安裝按鈕。

1.設置詩歌項目

本節將讓 Poetry 將一些已經存在的項目文件夾/目錄變成實際的 Poetry 項目。 如果您在要調試文件的文件夾中已經有一個pyproject.toml文件和一個poetry.lock文件,那么您可以跳到“2. 使用 Poetry 虛擬環境”部分。

1.1。 打開 VS 代碼

1.2. 在 VS Code 中打開終端(鍵盤快捷鍵: Ctrl + `

1.3. 使用 PowerShell 命令(如cd ~\path\to\my_project_folder )將目錄更改為項目所在的文件夾

  • 這是創建pyproject.tomlpoetry.lock文件的地方

1.4. 在終端/PowerShell 中鍵入poetry init並按Enter

  • Poetry 將以交互方式遍歷設置,並詢問您想要該項目的哪些包。 完成后,它將創建一個pyproject.toml文件。 此文件告訴 Poetry 您正在使用哪些版本的 Python、哪些包以及任何限制。 例如,如果您告訴它您只想要 Python 3.8 到(但不包括)3.11,它將具有行python = ">=3.8,<3.11"

1.5。 在終端/PowerShell 中輸入poetry install ,然后按Enter

  • 這將為您的詩歌項目創建一個poetry.lock文件一個virutalenv。 它還會在該 virtualenv中安裝pyproject.toml文件中指定的所有包。 根據您擁有的包裹數量,這可能需要一段時間

2.使用詩歌虛擬環境

本節創建 Poetry shell並激活在步驟 (1.5.) 中創建的 Poetry 虛擬環境。 嚴格來說,你不需要這樣做來讓 VS Code 調試器工作,但是當你只想運行Python 文件時,它可能會為你節省一些擊鍵。 Go 到“你為什么想做(2.)”,看看這是否值得打擾。 如果您趕時間,只需 go 和“為什么要這樣做 (2.)”部分中的“選項 1”即可在 Poetry 中運行 Python 文件。

2.1。 確保您位於帶有pyproject.toml的項目目錄/文件夾中,然后在終端中鍵入poetry shell並按Enter

  • exit終端命令將同時停用虛擬環境並退出 Poetry shell
  • 值得注意的是, 詩歌文檔似乎建議設置一個新的 shell 而不是僅僅激活 virtualenv
為什么要這樣做(2.):運行(非調試)Python 文件時保存擊鍵

假設您不想使用調試器,只想運行python 文件。 您可能習慣於去終端並使用python your_python_file.py (或python.\your_python_file.py使用 PowerShell 的選項卡自動完成時)。

那么問題是什么? 好吧,假設您在 your_python_file.py 中import pandasyour_python_file.py但 pandas 並未全局安裝(但您確實使用 Poetry 來安裝它,無論是在poetry init階段還是使用終端命令poetry add pandas get...一個ModuleNotFoundError: No module named 'pandas'

你可能會想,“等等,我不是用 Poetry 安裝了 pandas 嗎?” 答案是肯定的,但只有詩歌知道。 所以你有幾個選擇:

選項 1:使用 Poetry 運行 Python 文件(更多擊鍵)

所以而不是

python.\your_python_file.py

您可以使用

poetry run python.\your_python_file.py

  • 這個選項可能不是那么麻煩,因為您可以使用向上箭頭鍵來獲取以前輸入的命令
  • 如果您希望進行大量調試,這可能是一個更好的選擇,因為調試器在 Poetry shell 中不起作用(閱讀最后的“一些最終(重要)注釋”部分)
選項 2:創建詩歌 shell 並運行 Python 文件

這涉及首先執行 (2.1.),然后您可以使用

python.\your_python_file.py

或者,夠有趣的,

使用 Tab 自動完成時python your_python_file.py

  • 如果您使用 go 選項 2,那么當您想在具有不同包和依賴項的不同 Poetry 項目中運行 Python 文件時,您需要記住使用終端命令exit
  • 如果要使用 VS Code 調試器,需要退出 shell
  • 很明顯,您在 Poetry shell 中,因為它實際上不是PowerShell (它是ls命令提示符和cat your_python_file.py命令)

3.更改詩歌的VS Code Python解釋器

本節告訴 VS Code 在 Poetry 虛擬環境中使用 Python 解釋器。

3.1。 打開命令托盤(鍵盤快捷鍵: Ctrl + Shift + PF1

3.2. 使用鼠標搜索“python:select 解釋器”和 select 或使用箭頭鍵導航並按Enter

3.3. Select "輸入解釋器路徑..."

3.4. Go 返回終端/PowerShell(鍵盤快捷鍵: Ctrl + `

3.5. 鍵入poetry env info --path並按Enter

  • 注意:如果沒有顯示,那么您可能還沒有 virtualenv。 您可以使用poetry env info命令檢查“路徑:”部分是否有“NA”。 如果是這種情況,您可以通過執行 (1.5.) 創建一個 virtualenv。 然后重復步驟 (3.5.)

3.6. 將步驟 (3.5.) 的結果復制並粘貼到 VS Code 頂部的提示框中,顯示“輸入 Python 解釋器的路徑”,然后按Enter

4. 運行和使用 VS Code 調試器

4.1。 打開您要調試的 .py 文件

4.2. 設置您希望調試器停止的任何斷點

  • 這可以通過單擊行號的左側來完成。 應該出現一個紅點

4.2. F5開始調試器。

  • VS Code 可能會在“選擇調試配置”下彈出一些選項。 如果是這樣,只需 select “Python 文件調試當前活動的 Python 文件”

4.3. F11單步執行程序

一些最終(重要)說明

  • 每當您嘗試運行 VS Code 調試器時,它都會使用您在“3. Change VS Code Python interpreter for Poetry”部分中設置的 Python 解釋器。 如果您想調試不同的 Poetry 項目,只需重復這些步驟
  • VS Code 調試器僅在您不在 Poetry shell 中時才能工作 因此,如果您在“為什么要這樣做 (2.)”中選擇選項 2.,那么您需要在運行調試器之前使用終端命令exit

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM