ModuleNotFoundError:没有名为“ tensorflow.contrib”的模块; 'tensorflow'不是包

时间:2018-06-27 19:14:56

标签: python tensorflow

我正在尝试使用Tensorflow,但遇到错误。 我在Google和该网站上进行了搜索,但没有找到答案。

所以让我解释一下。我当前在计算机上使用anaconda3。我使用'Anaconda Prompt'通过pip install -q --upgrade tensorflow安装tensorflow。 它有效,但是当我运行这段代码(来自here)时:

from __future__ import absolute_import, division, print_function

import os
import matplotlib.pyplot as plt

import tensorflow as tf
import tensorflow.contrib.eager as tfe

tf.enable_eager_execution()

print("TensorFlow version: {}".format(tf.VERSION))
print("Eager execution : {}".format(tf.executing_eagerly()))

我收到以下错误:

Traceback (most recent call last):
File "<ipython-input-11-9a561e7b074b>", line 1, in <module>
runfile('C:/Users/emile/Desktop/tensorflow.py', wdir='C:/Users/emile/Desktop')

File "C:\Users\emile\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile
execfile(filename, namespace)

File "C:\Users\emile\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)

File "C:/Users/emile/Desktop/tensorflow.py", line 6, in <module>
import tensorflow as tf

File "C:\Users\emile\Desktop\tensorflow.py", line 7, in <module>
import tensorflow.contrib.eager as tfe

ModuleNotFoundError: No module named 'tensorflow.contrib'; 'tensorflow' is not a package

可能是Anaconda引起的问题?

非常感谢。

1 个答案:

答案 0 :(得分: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),但显然不是,因此会出现“ ...不是软件包”错误消息。