AttributeError:部分初始化的模块“ tensorflow”没有属性“ config”(很可能是由于循环导入)

时间:2020-10-24 03:58:10

标签: python tensorflow

我继续收到此错误:

Traceback (most recent call last)
   File "tensorflow.py", line 1, in <module>
import tensorflow as tf
   File "C:\Users\Anush\Desktop\tensorflow.py", line 2, in <module>
print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))
  AttributeError: partially initialized module 'tensorflow' has no attribute 'config' (most likely due to a circular import)

这是我的代码:

import tensorflow as tf
print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))

以下是我的Tensorflow版本: tensorboard-2.3.0 tensorflow-2.3.1 tensorflow-estimator-2.3.0 tensorflow-gpu-2.3.1

我使用的是Python 3.8.0

2 个答案:

答案 0 :(得分:1)

就我而言,我只是将当前脚本名称从 code.py 重命名为 testing.py。然后它完美地工作。

怀疑相同的 code.py 文件名在导入 tensorflow 库中,导致此循环导入错误。

答案 1 :(得分:0)

当python执行脚本时,它将在python路径中包括脚本的目录。这使程序员无需显式安装即可轻松为脚本提供自己的模块。另外,python不会将该顶级脚本视为模块(或更准确地说,将其命名为__main__)。

在您的情况下,您将脚本命名为“ tensorflow.py”。 Python执行脚本,并且在看到import tensorflow时会导入您的模块,而不是真正的tensorflow包。由于它还没有名为tensorflow的模块(原始模块为__main__),因此它将再次执行该文件并再次看到import tensorflow,但仍然是一样的tensorflow.py。那可能永远持续下去,但是python检测到循环导入并发出您看到的错误。

python这样做很糟糕。它使部署模块和程序包更加容易,但是它很脆弱。您必须确保.py文件名不会与python安装中可能显示的任何内容冲突。

解决方案是重命名C:\Users\Anush\Desktop\tensorflow.py。而且只是不要将其命名为您可能安装的任何python软件包。