-
Notifications
You must be signed in to change notification settings - Fork 894
Description
ImportError: cannot import name get_imports from datasets.utils.py_utils when using MsDataset
描述这个 Bug
在使用 modelscope.msdatasets.MsDataset 加载 openslr/librispeech_asr(子集 clean)时,仅仅导入 MsDataset 就会报错:
from modelscope.msdatasets import MsDataset报错信息:
Traceback (most recent call last):
File "/proj/rwkv-slm/src/./download/download_librispeech.py", line 2, in <module>
from modelscope.msdatasets import MsDataset
File "/proj/rwkv-slm/src/.venv/lib/python3.12/site-packages/modelscope/msdatasets/__init__.py", line 2, in <module>
from modelscope.msdatasets.ms_dataset import MsDataset
File "/proj/rwkv-slm/src/.venv/lib/python3.12/site-packages/modelscope/msdatasets/ms_dataset.py", line 25, in <module>
from modelscope.msdatasets.utils.hf_datasets_util import load_dataset_with_ctx
File "/proj/rwkv-slm/src/.venv/lib/python3.12/site-packages/modelscope/msdatasets/utils/hf_datasets_util.py", line 53, in <module>
from datasets.utils.py_utils import get_imports
ImportError: cannot import name 'get_imports' from 'datasets.utils.py_utils' (/proj/rwkv-slm/src/.venv/lib/python3.12/site-packages/datasets/utils/py_utils.py)
看起来 modelscope/msdatasets/utils/hf_datasets_util.py 依赖了 datasets.utils.py_utils.get_imports 这个函数,但是当前版本的 datasets==4.4.1 中并没有这个符号,导致导入 MsDataset 失败。
同一个文件中还从 datasets.load 里导入了 resolve_trust_remote_code 等符号,对 datasets 版本的要求似乎比当前文档 / 依赖声明中要高一些。
我目前的需求是使用:
from modelscope.msdatasets import MsDataset
ds = MsDataset.load(
'openslr/librispeech_asr',
subset_name='clean',
split='validation',
)
# 以及 split='test'来下载 openslr/librispeech_asr 的 clean 子集(validation 和 test),但在导入阶段就失败了。
复现步骤
-
创建虚拟环境并安装依赖(我这里使用的是
uv,等价于用 pip 安装如下版本):# 项目 pyproject.toml 中的关键依赖 modelscope==1.32.0 datasets==4.4.1当前实际环境中的版本(
uv pip list | grep -E "datasets|modelscope"):datasets 4.4.1 modelscope 1.32.0 -
运行最小复现脚本:
# test_msdataset_import.py from modelscope.msdatasets import MsDataset ds = MsDataset.load( 'openslr/librispeech_asr', subset_name='clean', split='validation', ) print(len(ds))
-
执行:
cd /proj/rwkv-slm/src uv run python test_msdataset_import.py -
得到上面的
ImportError: cannot import name 'get_imports' from 'datasets.utils.py_utils'。
期望行为
- 希望在当前
modelscope==1.32.0和datasets==4.4.1组合下能够正常导入并使用MsDataset,或者 - 如果
MsDataset实际上只支持更高版本的datasets,希望:- 在
modelscope的install_requires/ 文档中明确给出对datasets的版本要求; - 或者在不兼容的组合上给出更明确的报错提示(例如提示所需的最小
datasets版本)。
- 在
目前看起来 modelscope 和 datasets 之间存在一些 API 兼容性问题(例如依赖 get_imports、resolve_trust_remote_code 等在老版本中不存在的符号),但 pip/uv 安装时没有任何版本冲突提示。
环境信息(必填)
以下信息来自实际运行环境命令输出。
-
OS:
uname -a
输出:
Linux DESKTOP-AFQV2GT 6.6.87.1-microsoft-standard-WSL2 #1 SMP PREEMPT_DYNAMIC Mon Apr 21 17:08:54 UTC 2025 x86_64 GNU/Linux(运行在 Windows 11 的 WSL2 环境中)
-
CPU:
lscpu
关键信息:
Architecture: x86_64 CPU(s): 16 Vendor ID: AuthenticAMD Model name: AMD Ryzen 7 5700G with Radeon Graphics -
Python 版本(虚拟环境内):
/proj/rwkv-slm/src/.venv/bin/python3 -V
输出:
Python 3.12.11 -
包管理工具:
cd /proj/rwkv-slm/src uv --version输出:
uv 0.7.15 -
关键 Python 包版本:
uv pip show modelscope datasets
输出:
Name: datasets Version: 4.4.1 Location: /proj/rwkv-slm/src/.venv/lib/python3.12/site-packages Requires: dill, filelock, fsspec, httpx, huggingface-hub, multiprocess, numpy, packaging, pandas, pyarrow, pyyaml, requests, tqdm, xxhash Required-by: rwkv-fla --- Name: modelscope Version: 1.32.0 Location: /proj/rwkv-slm/src/.venv/lib/python3.12/site-packages Requires: filelock, requests, setuptools, tqdm, urllib3 Required-by: -
安装方式:使用
uv sync按照项目pyproject.toml安装依赖;中途曾尝试uv add "datasets>=2.14.0",但最终环境中datasets版本仍为4.4.1。 -
PyTorch:由项目依赖安装(
torch==2.9.1,torchaudio==2.9.1),GPU 为 NVIDIA CUDA 12 相关包(详细版本略)。
额外信息 / 猜测
- 从报错来看,
modelscope.msdatasets假设datasets.utils.py_utils中存在get_imports,但在datasets==4.4.1中并没有这个 API。 - 同一个模块中也从
datasets.load导入了resolve_trust_remote_code等符号,这些在部分版本的datasets中也不存在。 - 目前看不出
modelscope对datasets版本有明确的依赖限制,所以容易出现“安装成功但运行直接 ImportError”的情况。
@ 相关维护者
附件:
两个包的链接
https://pypi.org/project/modelscope/#history
最新版 1.33.0
https://pypi.org/project/datasets/#history
最新版 4.4.1