如何配置VSCode调试器以正确执行DeepEval单元测试包?
问题描述
在VSCode中使用调试器运行DeepEval执行LLM单元测试时,出现deepeval包执行错误,具体信息如下:
$ /usr/bin/env C:\Users\myuser\anaconda3\envs\myenv\python.exe c:\Users\myuser\.vscode\extensions\ms-python.debugpy-2024.6.0-win32-x64\bundled\libs\debugpy\adapter/../..\debugpy\launcher 54604 -- C:\Users\myuser\OneDrive\Desktop\Coding\Project/langchain_env/run_deepeval.py test run C:\Users\myuser\OneDrive\Desktop\Coding\Project/tests/test_output_generation.py C:\Users\myuser\anaconda3\envs\myenv\lib\site-packages\deepeval\__init__.py:42: UserWarning: You are using deepeval version 0.21.43, however version 0.21.45 is available. You should consider upgrading via the "pip install --upgrade deepeval" command. warnings.warn( C:\Users\myuser\anaconda3\envs\myenv\python.exe: No module named deepeval.__main__; 'deepeval' is a package and cannot be directly executed
当前launch.json配置:
{ "version": "0.2.0", "configurations": [ { "name": "Deepeval", "type": "python", "request": "launch", "program": "${workspaceFolder}/langchain_env/run_deepeval.py", "args": [ "test", "run", "${workspaceFolder}/tests/test_${fileBasename}" ], "debugStdLib": true, "justMyCode": true } ] }
已完成的前置操作:
- 确认DeepEval已安装在虚拟环境
myenv中; - 验证VSCode的Python解释器已切换至该虚拟环境;
- 创建了包装脚本
run_deepeval.py:
import sys import subprocess def main(): command = [sys.executable, "-m", "deepeval"] + sys.argv[1:] result = subprocess.run(command, capture_output=True, text=True) print(result.stdout) print(result.stderr) if __name__ == "__main__": main()
需要解决的问题:如何配置VSCode调试器以正确执行DeepEval?当前launch.json是否存在问题,或有更优配置方式?
解决方案
1. 修正包装脚本逻辑
当前包装脚本使用-m deepeval调用模块,但DeepEval的CLI入口并非通过该方式实现,导致deepeval.__main__不存在的错误。同时,subprocess.run的capture_output会隔离子进程IO,不利于调试。修改脚本如下:
import sys import subprocess from shutil import which def main(): deepeval_path = which("deepeval") if not deepeval_path: print("Error: deepeval not found in PATH", file=sys.stderr) sys.exit(1) command = [deepeval_path] + sys.argv[1:] result = subprocess.run(command) sys.exit(result.returncode) if __name__ == "__main__": main()
2. 简化launch.json配置(无需包装脚本)
直接配置VSCode调用DeepEval的可执行文件,避免中间脚本的干扰:
{ "version": "0.2.0", "configurations": [ { "name": "Deepeval Test", "type": "python", "request": "launch", "program": "${env:VIRTUAL_ENV}/Scripts/deepeval.exe", "args": [ "test", "run", "${workspaceFolder}/tests/test_${fileBasename}" ], "debugStdLib": false, "justMyCode": false, "python": "${env:VIRTUAL_ENV}/python.exe" } ] }
Linux/macOS环境下,将program路径改为${env:VIRTUAL_ENV}/bin/deepeval。
3. 升级DeepEval版本
根据错误提示,先执行版本升级以确保兼容性:
pip install --upgrade deepeval
4. 调试自定义测试代码的配置
若需调试测试文件(如test_output_generation.py)中的逻辑,可直接基于pytest配置调试(DeepEval底层依赖pytest):
{ "version": "0.2.0", "configurations": [ { "name": "Debug Deepeval Tests", "type": "python", "request": "launch", "module": "pytest", "args": [ "${workspaceFolder}/tests/test_${fileBasename}", "-xvs" ], "env": { "DEEPEVAL_RUN_TEST": "1" }, "justMyCode": false } ] }
此配置可直接命中测试代码中的断点,便于调试自定义逻辑。
内容的提问来源于stack exchange,提问作者edge selcuk
相关产品推荐
相关产品推荐

