我的项目结构如下:
Project Folder
--setup.py
----Module Folder
------ __init__.py
------ __main__.py
我的__main__.py
文件包含我的应用程序的入口点,并且安装文件的配置如下:
from setuptools import setup
setup(name='my_project',
version='0.1.0',
packages=['my_project'],
entry_points={
'console_scripts': [
'my_project= my_project.__main__:main'
]})
这意味着我可以在不使用调试器的情况下运行代码,
python -m my_project
我尝试通过使用VS Code进行调试,方法是导航至__main__.py
文件并按F5键运行,但这无法正常工作并引发异常。如何配置Visual Studio Code在调试模式下运行此模块?
另外,如何确保程序也按模块运行而不是按F5时正在查看的文件?
答案 0 :(得分:2)
经过研究,我找到了解决方案:
launch.json
文件。这将用于配置VS Code。launch.json
文件,则将其粘贴到其中:{
"version": "0.2.0",
"configurations": [
{
"name": "Python Module",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"pythonPath": "${config:python.pythonPath}",
"module": "my_project",
"cwd": "${workspaceRoot}",
}
]
}
我在这里找到此代码:https://github.com/DonJayamanne/pythonVSCode/issues/518#issuecomment-260838308
仅使用此答案对我不起作用,但我得到了错误:No module named my_project
,但我找到了此答案:https://github.com/DonJayamanne/pythonVSCode/issues/826
在其中,最后的注释告诉您将以下内容添加到配置中。
"env": {"PYTHONPATH":"${workspaceRoot}"},
这可以修复错误,现在您可以按F5键,您的模块将被调试。
答案 1 :(得分:2)
接受的答案对我不起作用(VSCode 1.49.0),并且我收到一条错误消息,内容为:Invalid message: "program", "module", and "code" are mutually exclusive
。
删除"program": "${file}",
行解决了该问题。我认为这很有意义,因为定义模块(带有隐式入口点)和文件都是多余的。
我的launch.json
看起来像这样:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python Module",
"type": "python",
"request": "launch",
"console": "integratedTerminal",
"module": "my_project",
}
]
}