VSCode加载Keras模型属性报错但代码运行正常问题求助
Keras模型加载后VSCode Pyright提示"Cannot access attribute 'summary' for class 'FunctionType'"的问题解决
问题原因
- 私有模块导致类型检查失效:你使用的
keras._tf_keras是Keras/TensorFlow的内部私有模块(命名以下划线开头),这类模块的类型定义并未对外公开。Pyright作为静态类型检查工具,无法解析该模块中load_model函数的返回类型,错误地将返回的模型对象识别为FunctionType,因此会报错无法访问summary等模型方法。 - 导入路径混乱:你被迫使用私有路径导入,大概率是因为环境中Keras与TensorFlow的版本不兼容,或者安装方式(比如同时安装了独立Keras和TensorFlow集成的Keras)导致常规导入路径失效,进而触发了
Import 'keras._' could not be resolved错误。
解决方法
方法1:修复正确的导入路径(优先推荐)
放弃使用私有模块导入,改用官方支持的导入方式:
- 如果你的环境是TensorFlow集成的Keras(绝大多数场景),使用:
from tensorflow.keras.models import load_model
- 如果是独立安装的Keras(较少见),使用:
from keras.models import load_model
如果之前用常规导入出现错误,执行以下步骤修复环境:
- 卸载现有Keras和TensorFlow:
pip uninstall -y keras tensorflow
- 重新安装匹配版本的TensorFlow(会自动安装对应版本的tf.keras):
pip install tensorflow
方法2:添加类型注解绕过Pyright检查
如果暂时无法修改导入路径,通过类型注解明确模型的类型,让Pyright正确识别:
from keras._tf_keras.keras.models import load_model from keras._tf_keras.keras.models import Model # 导入模型基类 model: Model = load_model('data/model.keras') print(model.summary())
方法3:调整Pyright配置忽略该错误
在项目根目录创建pyrightconfig.json文件,添加以下内容,让Pyright忽略该模块的类型检查:
{ "ignore": [ "**/keras/_tf_keras/**" ], "typeCheckingMode": "basic" # 可选,降低类型检查严格度 }
内容的提问来源于stack exchange,提问作者yees_7
相关产品推荐
相关产品推荐

