我认为“ as”子句只是使导入模块成为别名。 但是,在以下代码中,“导入”失败,并带有“ as”子句。
import tensorflow.python.eager as eager
此语句引发以下错误。
Traceback (most recent call last):
File "/home/snippet/prof/importer.py", line 2, in <module>
import tensorflow.python.eager as eager
AttributeError: module 'tensorflow' has no attribute 'python'
当我删除“ as”子句时,“导入”成功。 “ as”子句如何影响“ import”的成功和失败?
答案 0 :(得分:1)
from tensorflow.python import eager
导入名称“ tensorflow.python ”,然后获取其属性eager
,而
import tensorflow.python.eager as eager
导入名称“ tensorflow ”,并在其中尝试找到属性python
,并从中找到属性eager
,然后将其放入全局命名空间为eager
。这是一个巨大的差异,因为tensorflow的python
中没有对象__init__.py
,这是导入时代表tensorflow包的对象,并且不知道可能存在的任何子包。因此错误
AttributeError:模块'tensorflow'没有属性'python'
答案 1 :(得分:0)
在导入时不要将“ .eager”导入为“ eager”。
尝试一下,它将正常工作:
from tensorflow.python import eager as eager