如何解决Jupyter Lab中导入Keras库时的TypeError错误?
解决Keras导入时的TypeError错误
问题原因
你遇到的TypeError: Descriptors cannot not be created directly错误,本质是protobuf版本冲突:你当前安装的protobuf版本过高(大概率是4.x以上),而你用的TensorFlow 2.12.0和Keras 2.10还不支持这么新的版本,新protobuf禁止了旧代码里创建描述符的方式,因此触发报错。
两种解决办法(初学者友好)
办法一:降级protobuf到兼容版本(推荐长期使用)
这是最稳妥的解决方式,步骤如下:
- 打开Anaconda Prompt(或者在Jupyter Lab菜单栏点
File > New > Terminal打开终端) - 如果代码在虚拟环境运行,先激活环境:
conda activate 你的环境名称(用base环境则跳过) - 执行降级命令:
pip install protobuf==3.20.3
- 关闭当前Jupyter Lab窗口,重新打开后运行代码即可解决问题。
办法二:临时切换到纯Python实现的protobuf(仅临时测试用)
这个方法不用修改版本,但会让代码运行速度变慢,适合临时救急:
在你的导入代码最前面加上两行环境变量设置,再导入其他库:
import os os.environ['PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION'] = 'python' # 以下是你原来的导入代码 import numpy as np import os from keras.utils.np_utils import to_categorical from PIL import Image from sklearn.model_selection import train_test_split
内容的提问来源于stack exchange,提问作者gux2hi
相关产品推荐
相关产品推荐

