如何为python项目修复'no模块名为'tensorflow.contrib'?

时间:2019-03-23 07:18:30

标签: tensorflow

我在github中找到了一个聊天机器人程序,并希望运行该程序以更好地理解。但是每次我尝试运行该程序时,都会显示

  

没有名为'tensorflow.contrib'的模块

我该如何解决此错误?

4 个答案:

答案 0 :(得分:1)

可能您找到的代码是用 TensorFlow 1.x 编写的,但您安装了 TensorFlow 2.x。可以使用兼容性模块代替降级 TensorFlow:

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

来源:https://www.tensorflow.org/guide/migrate

答案 1 :(得分:0)

由其他专家解释:一个有趣的发现,希望这对在Anaconda或类似集成环境下开发的其他人有所帮助,这些环境中您的程序不是直接从命令行运行的,例如例如“ python myprogram.py”。

该问题可能是由于程序本身名为tensorflow.py引起的。它是在不是作为“主”模块启动,而是由另一个Python程序(在本例中为anaconda)加载的环境中运行的。

以这种方式加载python程序时,解释器将其读取为模块并将其放入模块列表中(与文件同名),因此现在有了sys.modules [“ tensorflow”]指向加载的用户程序(而不是安装的tensorflow模块)。当遇到“将tensorflow作为tf导入”行时,Python看到“ tensorflow”已经被导入,只是执行了tf = sys.modules [“ tensorflow”],这是对您自己的tensorflow.py的引用(已经是一个问题,但是您还没有去过tf.enable_eager_execution()-如果这样做,它会失败,因为您的tensorflow.py没有这样的功能)。

现在,有趣的部分:

import tensorflow.contrib.eager as tfe

Python已经导入了“ tensorflow”(您的模块!),因此它希望在与已加载的tensorflow.py相同的目录中找到任何子模块。特别是,它希望该目录是Python程序包(其中具有 init .py),但显然没有,因此会出现“ ...不是程序包”错误消息。

答案 2 :(得分:0)

tf.contrib.data已deprecated and been removed
尝试降级Tensorflow版本:

pip3 install tensorflow == 1.14

使用venv在单台计算机上安装多个张量流版本

答案 3 :(得分:0)

可能您正在尝试在 Windows 上运行它,请尝试在您的终端中运行它:

<块引用>

pip install cloudbiolinux==0.3a

<块引用>

pip 安装助手

<块引用>

pip 安装贡献