如何修复无法从radiomics导入getFeatureClasses的ImportError报错
报错根因
出现ImportError: cannot import name 'getFeatureClasses' from 'radiomics'的核心原因是包命名空间冲突:PyPI源存在两个占用radiomics导入名的包:
- 名为
radiomics的第三方无关小包,无getFeatureClasses接口 - 影像组学工具
PyRadiomics,才是提供getFeatureClasses方法的正确包
两个包同时安装、残留旧版本文件时,Python会优先加载错误的包文件,触发导入失败。
修复步骤
按顺序执行以下操作即可解决问题:
- 全量卸载所有冲突包,执行终端命令:
如果你用conda管理环境,额外执行pip uninstall -y radiomics pyradiomicsconda remove -y radiomics pyradiomics,避免conda渠道安装的包残留。 - 清理残留文件:根据报错提示的路径
/usr/local/lib/python3.7/dist-packages/,进入该目录检查是否存在radiomics相关的文件夹、.egg或.dist-info文件,存在则直接删除,避免旧文件干扰新包安装。 - 安装正确版本的依赖:注意不要安装名为
radiomics的包,直接安装PyRadiomics,Python3.7环境推荐安装兼容性最好的3.0.1版本:pip install pyradiomics==3.0.1 - 验证修复结果:进入Python交互终端执行以下代码,无报错则修复完成:
from radiomics import getFeatureClasses # 正常会输出所有可用的影像组学特征类列表 print(getFeatureClasses().keys())
注意事项
- 后续使用中不要执行
pip install radiomics,该包和PyRadiomics完全无关,安装后会直接覆盖正确的命名空间文件,复现本次报错。 - 如果在Jupyter Notebook/IDE中运行代码,装完包后必须重启对应运行内核,否则内核会加载缓存的旧包信息,依然报导入错误。
- Python3.7环境不要安装3.1.0及以上版本的PyRadiomics,高版本已放弃对Python3.7的适配,会出现接口缺失、运行报错等问题。
内容的提问来源于stack exchange,提问作者Muhammad Ali Hamza
相关产品推荐
相关产品推荐

