如何修复python项目的“没有名为“tensorflow.contrib”的模块?

Suj*_*Bal 5 tensorflow

我在 github 上找到了一个聊天机器人程序,想运行这个程序以更好地理解。但是每次我尝试运行这个程序时,它都会说

没有名为“tensorflow.contrib”的模块

我应该怎么做才能修复这个错误?

小智 1

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

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

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

现在,有趣的部分:

import tensorflow.contrib.eager as tfe
Run Code Online (Sandbox Code Playgroud)

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