前言
出现ImportError: cannot import name ‘xxx‘ from‘xxx’错误的原因有很多,本文只提供了由于库的版本导致错误的解决方案。
一、问题描述
报错提示
ImportError: cannot import name ‘SectionDict’ from ‘ezdxf.lldxf.loader’ (C:\anaconda3\envs\yunshibie\lib\site-packages\ezdxf\lldxf\loader.py)
在pycharm中点击错误,定位到该语句:
from ezdxf.lldxf.loader import SectionDict
二、问题分析
from ezdxf.lldxf.loader import SectionDict语句的作用是导入ezdxf文件夹下的子文件夹lldxf中的文件loader.py里的SectionDict
,前半句文字有些绕,直接上文件结构图。
而ezdxf这个库是通过pip install ezdxf安装的,由于从官网上直接下载的,未进行修改,所以说代码是原装的没有问题;并且也能在路径上找到对应的文件,所以排除了路径错误。但是为什么提示loader.py不能导入SectionDict呢?
最终我通过pip list,发现ezdxf的版本是1.0.3的,而我们的代码中需要的版本是0.17.2。所以最终答案是由于库的版本过高,SectionDict 对象是否已被废弃或更名。
三、解决方法
1卸载之前安装的版本、2安装指定版本的库
pip uninstall ezdxf
pip install ezdxf==0.17.2
四、总结
在使用第三方库时,要注意版本是否过高或者过低,可以尝试升级或降级 第三方库