如何修复‘无法从tensorflow.keras导入__version__’错误?
解决keras-rl2导入DQNAgent时的"cannot import name 'version' from 'tensorflow.keras'"错误
问题原因
keras-rl2 1.0.5版本的代码中尝试直接从tensorflow.keras导入__version__属性,但TensorFlow 2.10及以上版本中,tensorflow.keras不再暴露这个属性,导致导入失败。同时,直接调用keras.__version__报错也是因为这个原因——TensorFlow集成的Keras版本信息现在放在tensorflow.keras.version模块下。
解决方案
方案1:修改keras-rl2源代码(快速修复)
找到你的Anaconda环境中keras-rl2的安装目录(比如[你的环境路径]/lib/python3.x/site-packages/rl),修改相关文件中获取Keras版本的代码:
- 打开
rl/__init__.py文件,找到类似以下的代码行:from tensorflow.keras import __version__ as keras_version - 将其替换为兼容代码:
try: from tensorflow.keras import __version__ as keras_version except ImportError: from tensorflow.keras.version import VERSION as keras_version - 如果其他文件(比如
rl/agents/dqn.py)中有同样的导入逻辑,做相同修改。
方案2:降级TensorFlow到兼容版本
将TensorFlow降级到2.9.x版本(该版本仍保留tensorflow.keras.__version__属性),在Anaconda终端执行:
conda install tensorflow=2.9.0
降级后重新运行导入代码即可。
方案3:升级keras-rl2到最新开发版
keras-rl2的最新开发版本已修复该版本兼容问题,你可以通过克隆其官方源码仓库,在本地执行安装命令完成升级,或者使用pip直接安装其源码版本。
补充:正确查看TensorFlow集成Keras版本的方式
替代print(keras.__version__),使用以下代码查看版本:
import tensorflow as tf print(tf.keras.version.VERSION) # 或者直接查看TensorFlow版本,因为TF集成的Keras版本与TF版本绑定 print(tf.__version__)
内容的提问来源于stack exchange,提问作者scopchanov
相关产品推荐
相关产品推荐

