Repository: modelscope/evalscope
Issue: ImportError: cannot import name 'metric_registry' from 'evalscope.metrics' (/usr/local/lib/python3.10/dist-packages/evalscope/metrics/__init__.py)
Root cause: Interface Contract Mismatch

## 自查清单

在提交 issue 之前，请确保您已完成以下步骤:
- [x] 我已仔细阅读了[相关使用说明文档](https://evalscope.readthedocs.io/zh-cn/latest/get_started/parameters.html)
- [x] 我已查看了[常见问题解答](https://evalscope.readthedocs.io/zh-cn/latest/get_started/faq.html)
- [x] 我已搜索并查看了现有的 issues，确认这不是一个重复的问题

## 问题描述

通过source code + vllm api评测AIME，启动命令为:

evalscope eval \
 --model my_model \
 --api-url http://127.0.0.1:8081/v1/chat/completions \
 --api-key EMPTY \
 --eval-type service \
 --eval-batch-size 4 \
 --generation-config '{"temperature":0.6,"max_new_tokens":38912,"top_p":0.95}' \
 --datasets gpqa \
 --limit 4

出现了如下错误，看上去是一个循环导入的问题：

Traceback (most recent call last):
  File "/usr/local/bin/evalscope", line 8, in <module>
    sys.exit(run_cmd())
  File "/usr/local/lib/python3.10/dist-packages/evalscope/cli/cli.py", line 25, in run_cmd
    cmd.execute()
  File "/usr/local/lib/python3.10/dist-packages/evalscope/cli/start_eval.py", line 32, in execute
    run_task(self.args)
  File "/usr/local/lib/python3.10/dist-packages/evalscope/run.py", line 31, in run_task
    return run_single_task(task_cfg, run_time)
  File "/usr/local/lib/python3.10/dist-packages/evalscope/run.py", line 44, in run_single_task
    result = evaluate_model(task_cfg, outputs)
  File "/usr/local/lib/python3.10/dist-packages/evalscope/run.py", line 122, in evaluate_model
    evaluator = create_evaluator(task_cfg, dataset_name, outputs, base_model)
  File "/usr/local/lib/python3.10/dist-packages/evalscope/run.py", line 156, in create_evaluator
    from evalscope.benchmarks import Benchmark, BenchmarkMeta
  File "/usr/local/lib/python3.10/dist-packages/evalscope/benchmarks/__init__.py", line 7, in <module>
    from evalscope.benchmarks.data_adapter import DataAdapter
  File "/usr/local/lib/python3.10/dist-packages/evalscope/benchmarks/data_adapter.py", line 10, in <module>
    from evalscope.metrics import LLMJudge, metric_registry
ImportError: cannot import name 'metric_registry' from 'evalscope.metrics' (/usr/local/lib/python3.10/dist-packages/evalscope/metrics/__init__.py)

## EvalScope 版本（必填）
v0.16.1

## 使用的工具
- [ ] Native / 原生框架
- [ ] Opencompass backend
- [ ] VLMEvalKit backend
- [ ] RAGEval backend
- [ ] Perf / 模型推理压测工具
- [ ] Arena / 竞技场模式

## 执行的代码或指令

请提供您执行的主要代码或指令。

## 错误日志

请粘贴完整的错误日志或控制台输出。

## 运行环境

- 操作系统：
- Python版本：

## 其他信息

如果有其他相关信息，请在此处提供。


使用源码的话，请用这个方式来安装：https://evalscope.readthedocs.io/zh-cn/latest/get_started/installation.html#id2

> 使用源码的话，请用这个方式来安装：https://evalscope.readthedocs.io/zh-cn/latest/get_started/installation.html#id2

我就是这么安装的，现在我自己解决了，大概是：
1. evalscope/evalscope/benchmarks/data_adapter.py 中 from evalscope.metrics import metric_registry 改为from evalscope.metrics.named_metrics import metric_registry
2. 然后注释掉evalscope/evalscope/metrics/named_metrics.py t2v相关的包

可能t2v相关指标导入失败了，这部分我修改一下

> 可能t2v相关指标导入失败了，这部分我修改一下

不是这个问题，可能是一个lazy import导致的问题，建议你复现一下，用source code拉下来后安装，应该也跟硬件环境无关，软件环境我贴在问题描述上了

问题已修复

> 感谢你的反馈！我们将关闭此问题。如果您有任何疑问，请随时重新打开它。如果EvalScope对您有所帮助，欢迎给我们点个STAR以示支持，谢谢！