我正在尝试使用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引起的问题?
非常感谢。
答案 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
),但显然不是,因此会出现“ ...不是软件包”错误消息。