VSCode(WSL+venv)调试test_abc.py遇ModuleNotFoundError求助
解决VSCode(WSL+venv)调试时ModuleNotFound错误的方法
问题背景
调试tests/graphql/test_abc.py时,from server.config import settings行触发ModuleNotFoundError;VSCode测试扩展可正常运行,但Run and Debug无法访问上层目录;给launch.json添加"env": { "PYTHONPATH": "${workspaceRoot}" }后,调试无任何输出或错误。项目结构如下:
main folder/ ├─ server/ │ └─ config.py └─ tests/ └─ graphql/ └─ test_abc.py
可行解决方案
1. 修正launch.json的PYTHONPATH配置
${workspaceRoot}是旧版变量,WSL环境下建议改用${workspaceFolder},同时明确指定venv解释器路径。更新后的launch.json:
{ "version": "0.2.0", "configurations": [ { "name": "Python: Current File (WSL)", "type": "python", "request": "launch", "program": "${file}", "cwd": "${workspaceFolder}", "console": "integratedTerminal", "justMyCode": true, "env": { "PYTHONPATH": "${workspaceFolder}" }, "python": "${workspaceFolder}/venv/bin/python" } ] }
如果配置后仍无输出,检查VSCode左下角状态栏是否已切换到WSL中venv的Python解释器。
2. 在测试文件中手动添加项目根路径
如果环境变量配置不生效,可在test_abc.py开头加入代码,手动将项目根目录纳入Python搜索路径:
import sys from pathlib import Path # 向上三层路径定位到main folder project_root = Path(__file__).parent.parent.parent sys.path.append(str(project_root)) from server.config import settings # 后续测试代码...
3. 在venv激活脚本中配置PYTHONPATH
编辑WSL中venv的激活脚本venv/bin/activate,在末尾添加以下内容,确保每次激活环境时自动设置路径:
export PYTHONPATH="/实际路径/main folder"
替换/实际路径/main folder为项目根目录的绝对路径(可在main folder下执行pwd命令获取)。
4. 确认VSCode解释器关联正确
点击VSCode左下角状态栏的Python版本,选择Enter interpreter path,导航到main folder/venv/bin/python,确保使用venv内的解释器。
内容的提问来源于stack exchange,提问作者Aidos Kenessov
相关产品推荐
相关产品推荐

