当我在 vscode 中打开一个 .py 文件时,vscode 窗口的右上角会出现一个调试按钮。
[![在此处输入图片描述]
我有一个多根工作区,并定义了一个启动配置。当我使用 F5 按钮开始调试/运行时,会自动选择一个启动配置,一切正常。但如果我使用右上角的调试按钮突出显示,vscode 会抱怨它找不到工作区中导入的模块。这个按钮使用什么调试/运行环境?
在 VS Code 中,右上角的调试按钮是为快速调试当前打开的文件设计的。它会尝试运行当前文件,但使用的是默认的 Python 环境,而不一定是你在 launch.json 中配置的工作区环境。这可能导致模块找不到的情况,尤其是在多根工作区(multi-root workspace)中,或者你依赖特定的虚拟环境时。
launch.json
python current_file.py
PYTHONPATH
.env
在 VS Code 左下角,点击显示的 Python 版本,或者通过命令面板 (Ctrl+Shift+P 或 Cmd+Shift+P),运行 Python: Select Interpreter,确保你选择了正确的 Python 虚拟环境。
Ctrl+Shift+P
Cmd+Shift+P
Python: Select Interpreter
VS Code 的调试按钮可能忽略 launch.json 的环境变量配置,因此需要显式指定 PYTHONPATH。
步骤: 1. 在你的工作区根目录下,创建一个 .env 文件。 2. 添加如下内容,明确指定模块路径: env PYTHONPATH=${workspaceFolder} 3. 在 VS Code 的 settings.json 文件中,确保 .env 文件已加载: json "python.envFile": "${workspaceFolder}/.env"
env PYTHONPATH=${workspaceFolder}
settings.json
json "python.envFile": "${workspaceFolder}/.env"
如果你希望右上角的调试按钮使用 launch.json 中的配置,你可以设置一个默认的调试配置: 1. 打开 launch.json 文件。 2. 添加一个名为 default 的配置: json { "version": "0.2.0", "configurations": [ { "name": "Python: Current File", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "cwd": "${workspaceFolder}", "envFile": "${workspaceFolder}/.env", "justMyCode": false } ] } 3. 确保你选择了此配置,并在右上角点击调试按钮。
default
json { "version": "0.2.0", "configurations": [ { "name": "Python: Current File", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "cwd": "${workspaceFolder}", "envFile": "${workspaceFolder}/.env", "justMyCode": false } ] }
F5
Ctrl+F5
与右上角按钮相比,使用 F5(开始调试)或 Ctrl+F5(无调试运行)会使用 launch.json 的设置,并更好地支持自定义配置。
右上角的调试按钮默认使用的是当前文件所在的 Python 解释器,但它可能不会自动加载 launch.json 或 PYTHONPATH 设置。为避免模块找不到的情况: - 确保已选择正确的 Python 解释器。 - 明确设置 PYTHONPATH。 - 更推荐使用 F5 键或调整 launch.json 配置以支持调试需求。
如果还是遇到问题,可以检查终端输出以确认具体的 Python 环境和路径配置是否正确。