无法加载tensorflow_hub且导入后出现AttributeError问题求助(Python3.6+TF1.7)
解决TensorFlow 1.7 + Python 3.6下tensorflow_hub导入的AttributeError问题
这个问题我之前碰到过好几次,核心原因是你安装的tensorflow_hub版本和TensorFlow 1.7的API不兼容——TensorFlow 1.x系列的estimator模块API变动比较大,而后续更新的tensorflow_hub已经不再适配TF 1.7这种早期版本了。下面给你几个可行的解决办法:
方法1:降级tensorflow_hub到兼容版本
这是最稳妥的方案,直接安装专门适配TF 1.7的hub版本:
pip install tensorflow-hub==0.1.1 --force-reinstall
这个版本的tensorflow_hub是针对TF 1.x早期分支开发的,内部对estimator的引用路径和TF 1.7完全匹配,不会出现找不到Exporter类的问题。
方法2:手动修改tensorflow_hub的源码(不推荐)
如果你不想降级,可以临时修改hub库中报错的文件:
- 找到你的Python环境中
tensorflow_hub的安装目录,比如Windows虚拟环境下的venv\Lib\site-packages\tensorflow_hub - 打开
latest_module_exporter.py文件 - 把开头的
from tensorflow.python.estimator.estimator_lib import Exporter改成:
from tensorflow.python.estimator.exporter import Exporter
不过要注意,这种修改只是临时的,后续更新tensorflow_hub会覆盖掉这个改动,而且可能还会触发其他兼容问题,所以优先推荐方法1。
方法3:升级TensorFlow到更高的1.x稳定版
如果你的项目允许,建议把TensorFlow升级到1.x的最后一个稳定版(1.15),它的API更完善,兼容的tensorflow_hub版本也更多:
pip install tensorflow==1.15 tensorflow-hub==0.12.0 --force-reinstall
Python 3.6完全支持TF 1.15,升级后不仅能解决当前的Exporter问题,还能避免很多其他TF 1.7的已知bug。
额外提示
- 尽量使用虚拟环境管理依赖,避免全局包版本冲突;
- 安装时加上
--force-reinstall可以确保彻底替换掉旧的不兼容版本。
内容的提问来源于stack exchange,提问作者Gal Hyams
相关产品推荐
相关产品推荐

