Как настроить vimspector.json для работы с poetry run

#python #python-poetry #vimspector

#python #python-поэзия #vimspector

Вопрос:

Я создаю CLI на python с использованием poetry и в прошлом использовал vimspector отдельно для отладки python.

Когда я тестирую обычный файл python, я могу настроить свой vimspector.json как

 {
  "configurations": {
    "run": {
      "adapter": "debugpy",
      "configuration": {
        "request": "launch",
        "protocol": "auto",
        "stopOnEntry": true,
        "console": "integratedTerminal",
        "program": "${workspaceRoot}/gzrparse.py",
        "cwd": "${workspaceRoot}"
      }
    },
    "parse": {
      "adapter": "debugpy",
      "configuration": {
        "request": "launch",
        "protocol": "auto",
        "stopOnEntry": true,
        "console": "integratedTerminal",
        "program": "${workspaceRoot}/test/parse.py",
        "cwd": "${workspaceRoot}"
      }
    }
  }
}
 

Который отлично подходит для этих целей, я бы тоже хотел отладить свой CLI с помощью vimspector, но я изо всех сил пытаюсь найти правильные конфигурации в моем файле .json. Когда я использую CLI, я могу poetry run packagename работать нормально, поэтому я пытаюсь заставить vimspector повторить эту команду.

Кто-нибудь знает, возможно ли это? Или как это сделать? Я пытался адаптироваться к этому ответу, но я немного не понимаю, что я делаю.

Ответ №1:

Сначала вам нужно выполнить poetry install , чтобы создать virtualenv и установить в него свой модуль.

Затем вы можете начать отладку файла, который вы редактируете, используя конфигурацию:

         "run-current-file": {
        "adapter": "debugpy",
        "variables": {
            "venv": {
                "shell": ["poetry", "env", "info", "-p"]
            }
        },

        "configuration": {
            "request": "launch",
            "protocol": "auto",
            "stopOnEntry": true,
            "console": "integratedTerminal",
            "python": "${venv}/bin/python",
            "program": "${file}",
            "cwd": "${workspaceRoot}"
        }
    },
 

Начнется отладка текущего открытого файла с использованием python из виртуальной среды poetry, найденной путем выполнения команды poetry env info -p

Конечно, вы можете оставить настройку «program», чтобы всегда отлаживать один и тот же файл:

 "program": "${workspaceRoot}/test/parse.py"
 

Для отладки модуля (при условии, что ваш модуль имеет __main__.py файл) вам нужна конфигурация:

 "runmodule": {
    "adapter": "debugpy",
    "variables": {
        "venv": {
            "shell": ["poetry", "env", "info", "-p"]
        }
    },

    "configuration": {
        "request": "launch",
        "protocol": "auto",
        "stopOnEntry": true,
        "console": "integratedTerminal",
        "python": "${venv}/bin/python",
        "module": "<mymodule>",
        "cwd": "${workspaceRoot}"
    }
},
 

Где нужно заменить <mymodule> на ваше имя модуля.