#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>
на ваше имя модуля.