PyCharm调试模式下导入numpy报module 'numpy.core'无'numerictypes'属性错误
故障原因
1. PyCharm调试器预加载逻辑bug
PyCharm 2021.2版本调试器为了支持numpy类型的变量预览、格式化展示功能,会在程序启动前预加载部分numpy符号。该预加载逻辑会打乱numpy自身的模块初始化顺序:numpy.core的子模块numerictypes还未完成初始化,就被numpy顶层__init__.py调用,最终触发属性不存在的错误。运行模式下不会触发该预加载逻辑,所以运行时无报错。
2. 虚拟环境路径解析优先级错误
当前使用虚拟环境部署依赖的场景下,该版本PyCharm调试器解析包路径时存在优先级异常,会优先加载全局Python环境中安装的numpy,如果全局numpy版本和虚拟环境中安装的1.21.2版本结构不一致,会导致core.numerictypes路径无法正常识别。
3. 调试兼容模式冲突
如果调试配置中开启了「Gevent compatible」「PyQt compatible」兼容选项,这类选项会修改Python默认的模块导入逻辑,和numpy的延迟导入机制冲突,导致子模块加载不全。
解决方案
- 打开PyCharm设置→构建、执行、部署→Python调试器,取消勾选「Gevent compatible」「PyQt compatible」选项后重启调试
- 在调试配置的「环境变量」栏添加参数
PYDEVD_LOAD_NUMPY_EXPORTERS=0,关闭调试器的numpy预加载功能 - 升级PyCharm到2021.3及以上版本,该版本已修复此numpy导入冲突的已知问题
- 卸载全局Python环境中的numpy,避免不同版本包路径冲突
内容的提问来源于stack exchange,提问作者Martin Bammer
相关产品推荐
相关产品推荐

