Ошибка "Нет модуля с именем manage" при попытке отладки приложения Werkzeug Django в VSCode
Как сказано в заголовке. У меня есть приложение Django, которое использует Werkzeug для включения https. У меня есть следующий launch.json, установленный:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Django",
"type": "python",
"request": "launch",
"python": "${workspaceFolder}/venv/Scripts/python.exe",
"program": "${workspaceFolder}\\appname\\manage.py",
"args": [
"runserver_plus",
"--cert-file",
"${workspaceFolder}/certs/cert.pem",
"--key-file",
"${workspaceFolder}/certs/key.pem"
],
"justMyCode": false,
"django": true
}
]
}
Когда я запускаю это через отладчик VSCode, он немедленно завершает работу в функции get_wsgi_application()
с сообщением "No module named manage". Я попробовал погуглить, но ни один ответ не оказался полезным. Есть идеи, что я делаю не так?
попробуйте это
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Django",
"type": "python",
"request": "launch",
"python": "${workspaceFolder}/venv/Scripts/python.exe",
"program": "${workspaceFolder}/manage.py",
"args": [
"runserver",
],
"justMyCode": false,
"django": true
}
]
}
manage.py находится в базовом каталоге проекта. Таким образом
"program": "${workspaceFolder}\\manage.py",
Попробуйте добавить каталог, в котором находится manage.py, в свой путь. Таким образом вы предоставляете права доступа к вашей папке.
Эта проблема характерна только для отладчика VS Code и возникает из-за неправильного пути в переменной PYTHONPATH
. Следовательно, эта проблема не возникнет, если вы запустите его из shell.
В вашем случае вам нужно добавить новый атрибут с именем env
в конфигурацию launch.json
, который добавит переменную окружения . В ней нужно обновить PYTHONPATH
, поскольку manage.py находится не в корневой папке проекта:
"configurations": [
{"env": {
"PYTHONPATH": "${workspaceRoot}\\appname"
},
"name": "Python: Django",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}\\appname\\manage.py",
"args": [
"runserver_plus"
],
"django": true,
"justMyCode": false
}
]
}